我可以在pytest中执行多个断言吗?

我正在将pytest用于我的selenium测试,并想知道在一个测试中是否可能有多个断言?

我调用了一个比较多个值的函数,并且我希望测试报告所有不匹配的值。我遇到的问题是,使用“ assert”或“

pytest.fail”会在发现不匹配的值时立即停止测试。

有没有办法让测试继续运行并报告所有不匹配的值?

回答:

正如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的处理方式与鼻子完全相同。

以上是 我可以在pytest中执行多个断言吗? 的全部内容, 来源链接: utcz.com/qa/432013.html

回到顶部