0
votes

Différent code de sortie avec Pytest lorsque des tests augmentent une exception non gérée (autre que AssertionError)

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')


1 commentaires

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.


3 Réponses :


0
votes

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')


2 commentaires

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/...



0
votes

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 ===========================


4 commentaires

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 dans ma réponse initiale.


Tous mes tests doivent arriver au point de retourner avec succès ou échouer avec un AssertionError . 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 . Je me demande si vous pouvez utiliser / tweak Pytest-Custom-Code-Code Plugin pour vos besoins.



0
votes

j'ai finalement fini avec https://pypi.org/project/pytest-unhandle-exception-exit -code /

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


0 commentaires