python3如何设置unittest中通过的测试
我有一个循环测试来检查一些条件 若条件为true,我希望该循环中断并通过测试,否则我希望在循环结束后将测试标记为失败 这是密码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()
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
语句,尽管我更喜欢将条件添加到循环的条件中(请参见上面的回答)。最终,我想这是一个品味的问题。>断言只有在失败时才会打破测试哇,谢谢你,这是我真正没有考虑过的情况。