[英]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.