长时间运行py.test在第一次失败时停止

时间:2016-04-22 22:21:03

标签: python pytest

我正在使用pytest,测试执行应该运行直到遇到异常。如果测试从未遇到异常,它应该继续运行剩余的时间或直到我发送一个SIGINT / SIGTERM。

是否有一种编程方式告诉pytest在第一次失败时停止运行,而不是必须在命令行执行此操作?

3 个答案:

答案 0 :(得分:32)

请查看http://pytest.org/latest/usage.html#usage

上的文档
py.test -x            # stop after first failure
py.test --maxfail=2    # stop after two failures

答案 1 :(得分:3)

您可以在pytest.ini文件中使用addopts。它不需要调用任何命令行开关。

# content of pytest.ini
[pytest]
addopts = --maxfail=2  # exit after 2 failures

您还可以在运行测试之前设置环境变量“ PYTEST_ADDOPTS”。

如果要使用python代码在首次失败后退出,可以使用以下代码:

import pytest

@pytest.fixture(scope='function', autouse=True)
def exit_pytest_first_failure():
    if pytest.TestReport.outcome == 'failed':
        pytest.exit('Exiting pytest')

此代码将exit_pytest_first_failure夹具应用于所有测试,并在首次失败的情况下退出pytest。

答案 2 :(得分:1)

pytest 具有选项-x--exitfirst,该选项会在出现第一个错误或失败的测试时立即停止执行测试。

pytest 还具有选项--max-fail=num,其中num表示停止执行测试所需的错误或失败次数。

pytest -x            # if 1 error or a test fails, test execution stops 
pytest --exitfirst   # equivalent to previous command
pytest --maxfail=2   # if 2 errors or failing tests, test execution stops