web-dev-qa-db-fra.com

longue durée py.test stop at first échec

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?

20
Matt

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
29

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.

1
SilentGuy