我正在使用pytest,并且在测试函数中使用了几个条件,我想用一个断言检查,然后在测试结束时,列出失败的列表。
不幸的是,如果断言失败,则测试会立即中断并且不检查其他条件。是否可以使用不会破坏程序流程的断言?
import pytest
def test_example():
value1 = 1
value2 = 0
value3 = 0
assert value1 == 1
assert value2 == 2
assert value3 == 3
输出
================================== FAILURES ===================================
________________________________ test_example _________________________________
def test_example():
value1 = 1
value2 = 0
value3 = 0
assert value1 == 1
> assert value2 == 2
E assert 0 == 2
test_demo.py:50: AssertionError
========================== 1 failed in 0.21 seconds ===========================
如您所见,第二个断言失败后,它停止运行,是否有办法解决?我考虑编写if语句来检查每个条件以及它们是否失败,请增加一个计数器,最后检查该计数器是否为0,但这无法跟踪哪个测试失败。
答案 0 :(得分:1)
使用try/except
:
def test():
value1 = 1
value2 = 2
value3 = 3
try:
assert value1==1
except AssertionError as e:
print(e)
# continue this process for each value
答案 1 :(得分:0)
测试中的许多断言都是不好的做法。请阅读NASA和其他资料来源的“ 10的力量:制定安全关键代码的规则”中的规则5。 您可以参数化您的测试。