Ответ 1
Пожалуйста, проверьте документацию по адресу http://pytest.org/latest/usage.html#usage.
py.test -x # stop after first failure
py.test --maxfail=2 # stop after two failures
Я использую pytest
, и выполнение теста должно выполняться, пока не встретится исключение. Если тест никогда не встречает исключение, он должен продолжаться до конца или до тех пор, пока я не отправлю SIGINT/SIGTERM.
Есть ли программный способ сказать pytest
чтобы он прекратил работу при первом сбое, в отличие от необходимости делать это в командной строке?
Пожалуйста, проверьте документацию по адресу http://pytest.org/latest/usage.html#usage.
py.test -x # stop after first failure
py.test --maxfail=2 # stop after two failures
Вы можете использовать addopts в файле pytest.ini. Это не требует вызова какого-либо параметра командной строки.
# content of pytest.ini
[pytest]
addopts = --maxfail=2 # exit after 2 failures
Вы также можете установить переменную env "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 в случае первого сбоя.
У 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