Exécution du Test de l'arrêté après une erreur d'assertion dans pytest

0

La question

Pour les données de test, si il y a 10 ensembles de données, et l'assertion échoue pour la 3ème jeu de données, puis le reste de la 7 ensembles de données ne sont pas considérés pour l'exécution et le programme est arrêté à ce stade, complètement. J'ai essayé par removeing les "élever e" de la ligne et que le temps de tous les ensembles de données sont prises en compte pour l'exécution, mais à la fin, la situation est de montrer que PASSÉ qui n'est absolument pas correct car j'ai besoin d'une défaillance de l'état pour la 3ème série de données. S'il vous plaît laissez-moi savoir si vous avez des solutions pour la même chose.

J'ai essayé les 2 méthodes, et il ne fonctionne pas. Pour le premier, cas de test exécuté 10 fois pour 10 ensembles de données, mais même après un échec pour la 3ème jeu de données, l'exécution du test de l'état est de montrer que PASSÉ qui n'est pas correct que les cas de test doivent être omis dans le rapport.

Pour la seconde, l'exécution du test s'arrête complètement après l'échec d'assertion dans le 3ème jeu de données et le reste des ensembles de données ne sont pas considérés pour l'exécution.

Mon but est d'exécuter les cas de test pour tous les ensembles de données à la fois et de vérifier ensuite le rapport de toute défaillance.

        try:
            assert len(json_response_plan) == 1
        except Exception:
            pytest.raises(Exception)


        try:
            assert len(json_response_plan) == 1
        except Exception as e:
            raise e
automated-tests pytest python
2021-11-24 05:12:42
1

La meilleure réponse

1

pytest va arrêter l'exécution sur le premier échec pour une fonction de test. Ce qui signifie, si vous avez 10 cas, mais de les transmettre à une seule fonction de test (dans une boucle for, par exemple), il s'arrête sur le premier échec (c'est à dire, passer à la prochaine fonction de test, ou à la sortie, si il n'y a plus de fonctions de test). Pour résoudre ce problème, la norme est de faire en sorte que chacun de ces 10 cas, être considérés comme des cas de test. C'est là que paramétrées, luminaires viennent en image.

Considérons cet exemple:

def my_dataset():
    return range(5)  # return your datasets from here

@pytest.fixture(params=my_dataset())
def my_fixture(request):
    yield request.param  # this will `yield` each of the datasets individually, thereby, considering it as individual tests

def test_me(my_fixture):
    assert my_fixture < 4

$ pytest tests/test_me.py -vvv

tests/test_me.py::test_me[0] PASSED                                [ 20%]
tests/test_me.py::test_me[1] PASSED                                [ 40%]
tests/test_me.py::test_me[2] PASSED                                [ 60%]
tests/test_me.py::test_me[3] PASSED                                [ 80%]
tests/test_me.py::test_me[4] FAILED                                [100%]

================================ FAILURES ================================
_______________________________ test_me[4] _______________________________

my_fixture = 4

    def test_me(my_fixture):
>       assert my_fixture < 4
E       assert 4 < 4

tests/test_me.py:14: AssertionError
======================== short test summary info =========================
FAILED tests/test_me.py::test_me[4] - assert 4 < 4
====================== 1 failed, 4 passed in 0.19s =======================
2021-11-29 08:35:15

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................