Mate
estoy usando pytest
, y se supone que la ejecución de la prueba debe ejecutarse hasta que encuentre una excepción. Si la prueba nunca encuentra una excepción, debe continuar ejecutándose por el resto del tiempo o hasta que le envíe un SIGINT/SIGTERM.
¿Hay alguna forma programática de decir pytest
dejar de ejecutarse en el primer error en lugar de tener que hacerlo en la línea de comando?
Praveen Yalagandula
pytest -x # stop after first failure
pytest --maxfail=2 # stop after two failures
Ver el documentación de prueba.
miguelvargasf
pytest tiene la opción -x
o --exitfirst
que detiene la ejecución de las pruebas instantáneamente en el primer error o prueba fallida.
pytest también tiene la opción --maxfail=num
en el cual num
indica el número de errores o fallos necesarios para detener la ejecución de las pruebas.
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
chicosilencioso
Puedes usar adopta en pytest.ini
expediente. No requiere invocar ningún interruptor de línea de comando.
# content of pytest.ini
[pytest]
addopts = --maxfail=2 # exit after 2 failures
También puede establecer la variable env PYTEST_ADDOPTS
antes de ejecutar la prueba.
Si desea usar el código Python para salir después del primer error, puede usar este código:
import pytest
@pytest.fixture(scope="function", autouse=True)
def exit_pytest_first_failure():
if pytest.TestReport.outcome == 'failed':
pytest.exit('Exiting pytest')
Este código se aplica exit_pytest_first_failure
fixture a todas las pruebas y sale de pytest en caso de la primera falla.
-
AttributeError: el módulo ‘pytest’ no tiene el atributo ‘TestReport’
– Azure IP
1 de febrero a las 13:06
¿Puede mostrar su código de cómo está invocando pytest programáticamente?
–Tom Dalton
22 de abril de 2016 a las 23:19