2
我有一個測試循環檢查一些條件。python3如何設置在單元測試中通過的測試
如果條件爲真,我希望此循環中斷並通過測試,否則我想在循環結束後將測試標記爲失敗。
這裏是代碼
while time.time() < timeout:
if condition:
self.assertTrue(True)
self.fail()
但這種方法是行不通的,循環不與斷言突破,爲何如此?
我有一個測試循環檢查一些條件。python3如何設置在單元測試中通過的測試
如果條件爲真,我希望此循環中斷並通過測試,否則我想在循環結束後將測試標記爲失敗。
這裏是代碼
while time.time() < timeout:
if condition:
self.assertTrue(True)
self.fail()
但這種方法是行不通的,循環不與斷言突破,爲何如此?
斷言只有打破測試時,他們失敗。在原始代碼片段中,循環內部的斷言總是通過,所以測試不會中斷。解決這類問題的一種方法是保持一個布爾外循環,並斷言它當循環終止:
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)
這就是我在做什麼,現在的解決方案,但也應該是在一個while循環休息test_passed後=真,所以我雖然這可以更簡潔 – Semant1ka
@ Semant1ka你可以使用'break'語句,儘管我更喜歡將條件添加到循環的條件中(參見上面的答案)。最終,這是一個口味問題,我猜。 – Mureinik
>斷言只有在失敗時纔打破測試 哇,謝謝,這是我真的沒有想過的情況。 – Semant1ka