簡體   English   中英

python3如何設置在unittest中通過的測試

[英]python3 how to set test passed in unittest

我有一個循環檢查某些條件的測試。

如果條件為真,我希望此循環中斷並通過測試,否則,我想在循環結束后將測試標記為失敗。

這是代碼

while time.time() < timeout:
    if condition:
        self.assertTrue(True)
self.fail()

但是此解決方案不起作用,循環沒有與斷言一起中斷,為什么會這樣呢?

斷言僅在失敗時才通過測試。 在您的原始代碼段中,循環內的assert始終會通過,因此測試將不間斷地繼續進行。 解決這類問題的一種方法是在循環外保留一個布爾值,並在循環終止時對其進行斷言:

test_passed = False
while not test_passed and time.time() < timeout:
    if condition:
        test_passed = True

self.assertTrue(test_passed)       

一個測試中可以有多個斷言,因此一個斷言不會中斷循環或返回函數。

這應該為您工作:

while not condition and time.time() < timeout:
    time.sleep(0.1)

self.assertTrue(condition)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM