python3如何设置在unittest中传递的测试

时间:2017-06-01 08:40:13

标签: python python-3.x python-unittest

我有一个测试循环检查某些条件。

如果条件为真,我希望这个循环中断并测试传递,否则我想在循环结束后将测试标记为失败。

这是代码

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

但是这个解决方案不起作用,循环没有断言断言,为什么呢?

2 个答案:

答案 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)