【问题标题】:Fail remaining pytest tests if a specific one fails如果特定测试失败,则剩余的 pytest 测试失败
【发布时间】:2015-02-03 18:38:42
【问题描述】:

所以我有一个目录,里面有一堆用 python 编写的测试,语法正确,以确保它们按顺序运行。

假设我有一个测试,如果失败,当前调用 pytest.exit('Exit Message')。这样做的问题是生成的 XML 测试输出只记录它之前的测试。我希望整个套件都运行,但如果上述测试失败,则报告为失败。

我想到的一个解决方案是设置一个环境变量以防万一它失败,然后在以下测试中检查该环境变量。问题是使用 Jenkins 运行它,未检测到环境变量集,如果存在,我更喜欢本机解决方案。

我拥有的是:

def test_check_connection(self):
    ...
    if Failed:
        pytest.exit('No connectivity')

【问题讨论】:

标签: python jenkins pytest


【解决方案1】:

您可以尝试在测试中设置全局变量并在以后的测试中引用它,如下所示:

def test_check_connection(self):
    ...
    if Failed:
        global failed_conn_check = True
    else:
        global failed_conn_check = False

然后在测试结束时:

    ...
    if failed_conn_check:
        raise SomeException
    ...

【讨论】:

    【解决方案2】:

    我不确定我是否正确理解了您的问题。如果您希望 pytest 在第一个失败的测试用例后停止,请使用 -x 选项

    pytest -x ...
    

    如果您想运行所有测试并想知道 jenkins 是否有任何失败,请检查 pytest 应用程序的退出代码:

    运行 pytest 会产生六种不同的退出代码:

    退出代码0:所有测试均已收集并成功通过

    退出代码 1:已收集并运行测试,但部分测试失败

    退出代码 2:测试执行被用户中断

    退出代码 3:执行测试时发生内部错误

    退出代码4:pytest命令行使用错误

    退出代码 5:未收集任何测试

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-02
      • 2016-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 2018-04-05
      • 1970-01-01
      相关资源
      最近更新 更多