J'aimerais savoir si une suite de test Pytest a échoué à cause de: 1. Un test donné a échoué sur une affirmation, ou 2. Un test donné a soulevé une exception non conçue
Ainsi, compte tenu des tests suivants: P>
def test_ok(): assert 0 == 0 def test_failed(): assert 1 == 0 def test_different_exit_code(): open('/nonexistent', 'r')
3 Réponses :
Pytest a une exception manipulée, permettez-moi de vous montrer un exemple:
def test_ok(): assert 0 == 0 # Test is ok def test_failed(): #assert 1 == 0 # Test failed REMOVE THIS PART AND USE assert not assert not 1 == 0 def test_different_exit_code(): open('/nonexistent', 'r')
J'ai oublié de mentionner quef pytest_bdd_step_error () Vous devez mettre dans un fichier conftest.py
Si vous souhaitez plus d'informations, consultez ce cours chapitre 9 TESTATUTOMATIONU. Appleitools.com/...
Vous pouvez utiliser Pytest-Finer-Verdics Plugin à différencier les échecs de test et d'autres échecs (par exemple, en raison des exceptions).
EDIT1: strong>
Par exemple, dans le fragment ci-dessous, P> collected 2 items
t.py FE [100%]
==================================== ERRORS =====================================
_________________________ ERROR at setup of test_error1 _________________________
def test_error1():
> open("/nonexistent", 'r')
E FileNotFoundError: [Errno 2] No such file or directory: '/nonexistent'
t.py:7: FileNotFoundError
=================================== FAILURES ====================================
___________________________________ test_fail ___________________________________
def test_fail():
> assert 75 <= 70
E assert 75 <= 70
t.py:4: AssertionError
============================ short test summary info ============================
FAILED t.py::test_fail - assert 75 <= 70
ERROR t.py::test_error1 - FileNotFoundError: [Errno 2] No such file or directo...
========================== 1 failed, 1 error in 0.19s ===========================
Je ne vois pas comment cela peut être utilisé pour définir un code de sortie différent
Étant donné qu'un processus n'a qu'un seul code de sortie, quel code de sortie attendez-vous lorsque différents types d'échecs de test rencontrés dans une exécution de Pytest? Je pense qu'une possibilité est de différencier les types d'échecs de test dans le rapport de Pytest, et le plugin Pytest-Finer-Verdicts le fait; Voir la Edit1 i> dans ma réponse initiale.
Tous mes tests doivent arriver au point de retourner avec succès ou échouer avec un AssertionError code>. En dehors de ceux-ci, j'aimerais savoir si un autre type d'exception se produisait et c'est le plus facile de détecter cela avec un code de sortie différent.
Donc, vous demandez un code de sortie qui signifie au moins un test dans la suite ne s'est achevé ni avec succès ni avec assertionError code>. Je me demande si vous pouvez utiliser / tweak Pytest-Custom-Code-Code Plugin pour vos besoins.
j'ai finalement fini avec https://pypi.org/project/pytest-unhandle-exception-exit -code / p>
Ceci permet de définir le code de sortie possible lorsqu'une exception non gérée se produit dans l'un des tests, comme avec la ligne d'exemple de commande:
Pytest --unhandled-EXC-EXIT-CODE 13 CODE> P>
Je ne pense pas que cela soit possible - le pytest Runner collecte et exécute des tests différents, et le code de sortie reflète le résultat global, et non le résultat d'un seul test. Question quelque peu liée a été demandée récemment.