我有一个测试循环检查某些条件。
如果条件为真,我希望这个循环中断并测试传递,否则我想在循环结束后将测试标记为失败。
这是代码
while time.time() < timeout:
if condition:
self.assertTrue(True)
self.fail()
但是这个解决方案不起作用,循环没有断言断言,为什么呢?
答案 0 :(得分:2)
断言只会在失败时中断测试。在原始代码段中,循环内的断言始终通过,因此测试继续不间断。解决这些类型问题的一种方法是在循环外部保留一个布尔值,并在循环终止时对其进行断言:
test_passed = False
while not test_passed and time.time() < timeout:
if condition:
test_passed = True
self.assertTrue(test_passed)
答案 1 :(得分:1)
您可以在测试中使用多个断言,因此断言不会中断循环或返回该函数。
这应该适合你:
while not condition and time.time() < timeout:
time.sleep(0.1)
self.assertTrue(condition)