正如Jon Clements所评论的那样,您可以填充错误消息列表,然后断言该列表为空,并在断言为false时显示每条消息。
具体来说,可能是这样的:
def test_something(self):
errors = []
# replace assertions by conditions
if not condition_1:
errors.append("an error message")
if not condition_2:
errors.append("an other error message")
# assert no error message has been registered, else print messages
assert not errors, "errors occured:\n{}".format("\n".join(errors))
原始断言被替换为在不满足条件的情况下if
将消息追加到errors
列表的语句。然后,您断言errors
列表为空(空列表为False),并使断言消息包含errors
列表中的每条消息。
您还可以按照鼻子文档中的说明制作测试生成器。我没有找到任何描述它的pytest文档,但是我知道pytest的处理方式与鼻子完全相同。