我正在使用pytest
,测试执行应该运行直到遇到异常。如果测试从未遇到异常,它应该继续运行剩余的时间或直到我发送一个SIGINT / SIGTERM。
是否有一种编程方式告诉pytest
在第一次失败时停止运行,而不是必须在命令行执行此操作?
答案 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