当前位置: 首页 > 面试题库 >

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

农波涛
2023-03-14
问题内容

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



 类似资料:
  • 我可以添加多个AsyncTask并同时执行吗?我可以从主activity开始执行多个Asynctask,如下所示。 公共类接收器扩展广播接收器{ } 在这段代码中,我得到了所有的日志,但在此之后,它将不会在AsyncTask的doInBackground()方法中运行。我在每个类方法doInBackground()中设置了Log,但没有一个在Log中被命中(意味着没有一个方法被执行)。 我的问题是

  • 我只是向类的构造函数添加了一些语句。 这直接导致了大约10项测试失败。 而不是摆弄那些测试,我只想在Python的优化中运行pytest,并打开(开关,这意味着都被忽略)。但是看了这些文件,搜索了一下,我找不到一个方法来做到这一点。 我有点想知道这是否是一种不好的做法,因为在测试期间可能是查看s是否失败的时候。 另一方面,另一个想法是,您可能有某些测试(集成测试等)。)应该在没有优化的情况下运行,

  • 我写了一个简单的程序,在一个循环中执行一堆NOP指令,令我惊讶的是,它每秒执行大约106000000000条指令,或大约10Ghz,而我的CPU只有2.2GHz。 这怎么可能?CPU是将它们视为单个兆NOP,还是我刚刚发现“指令级并行性”是什么意思? 每秒指令的更好衡量标准是什么?添加指令仅达到414900000/s,是我CPU报告的bogomips的十分之一:4390.03 C代码: 编译的程序

  • 问题内容: 从部署旨在在台式机上的用户上运行的应用程序的角度来看,我正在努力将自己的头全放在Docker上。我的应用程序只是一个Flask Web应用程序和mongo数据库。通常,我将同时安装在VM中,并将主机端口转发到来宾Web应用程序。我想尝试一下Docker,但不确定使用多个程序的含义。文档说只能有ENTRYPOINT,所以我怎么拥有Mongo和我的flask应用程序。还是需要将它们放在单独

  • 我试图从部署一个打算在桌面用户上运行的应用程序的角度来理解Docker。我的应用程序只是一个烧瓶网络应用程序和mongo数据库。通常情况下,我会在虚拟机中安装这两个程序,并将主机端口转发给来宾网络应用程序。我想尝试一下Docker,但我不确定我是如何使用多个程序的。文档说只能有ENTRYPOINT,所以我怎么才能拥有Mongo和我的烧瓶应用程序。或者它们需要在不同的容器中,在这种情况下,它们如何相

  • 下面是TestNG框架中的一个示例断言方法。 下面是fail方法。 在TestNG中是否有一个内置的方法来执行软断言。如果没有,实现这一点的理想方式是什么。