Je conçois un py.test qui est censé être exécuté jusqu'à ce qu'il rencontre une exception. Si le test ne rencontre jamais d’exception, il doit continuer à fonctionner pendant le temps qui reste ou jusqu’à ce que je lui envoie un SIGINT/SIGTERM.
Existe-t-il un moyen programmé de demander à py.test de cesser de s'exécuter lors du premier échec au lieu de le faire en ligne de commande?
Veuillez vérifier la documentation sur http://pytest.org/latest/usage.html#usage
py.test -x # stop after first failure
py.test --maxfail=2 # stop after two failures
Vous pouvez utiliser addopts dans le fichier pytest.ini. Il n'est pas nécessaire d'appeler un commutateur de ligne de commande.
# content of pytest.ini
[pytest]
addopts = --maxfail=2 # exit after 2 failures
Vous pouvez également définir la variable env "PYTEST_ADDOPTS" avant l'exécution du test.
Si vous souhaitez utiliser le code python pour sortir après le premier échec, vous pouvez utiliser ce code:
import pytest
@pytest.fixture(scope='function', autouse=True)
def exit_pytest_first_failure():
if pytest.TestReport.outcome == 'failed':
pytest.exit('Exiting pytest')
Ce code applique le dispositif exit_pytest_first_failure à tous les tests et quitte pytest en cas de premier échec.