python3如何设置unittest中通过的测试

python3如何设置unittest中通过的测试,python,python-3.x,python-unittest,Python,Python 3.x,Python Unittest,我有一个循环测试来检查一些条件 若条件为true,我希望该循环中断并通过测试,否则我希望在循环结束后将测试标记为失败 这是密码 while time.time() < timeout: if condition: self.assertTrue(True) self.fail() while time.time()

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

若条件为true,我希望该循环中断并通过测试,否则我希望在循环结束后将测试标记为失败

这是密码

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

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

断言只有在失败时才会破坏测试。在原始代码段中,循环中的断言始终通过,因此测试将不间断地继续进行。解决此类问题的一种方法是将布尔值保留在循环外部,并在循环终止时对其进行断言:

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

self.assertTrue(test_passed)       
测试通过=错误
当未通过测试时,time.time()<超时:
如果条件:
测试通过=真
self.assertTrue(测试通过)

一个测试中可以有多个断言,因此断言不会中断循环或返回函数

这应该适合您:

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

self.assertTrue(condition)
而不是条件和时间。time()
这就是我现在正在做的一个解决方案,但在测试通过=True之后,while循环中也应该有一个中断,所以我认为这可能更重要concise@Semant1ka您可以使用
break
语句,尽管我更喜欢将条件添加到循环的条件中(请参见上面的回答)。最终,我想这是一个品味的问题。>断言只有在失败时才会打破测试哇,谢谢你,这是我真正没有考虑过的情况。