L'esecuzione del Test viene interrotto dopo un errore di asserzione in pytest

0

Domanda

Per i dati guidato test, se ci sono 10 insiemi di dati, e l'asserzione non riesce per il 3 ° set di dati, quindi il resto dei 7 insiemi di dati non sono considerati, per l'esecuzione, e il programma viene fermato in quel punto completamente. Ho provato da sottratto il "raise e" linea, e che tutti i set di dati vengono prese in considerazione per l'esecuzione, ma alla fine, lo stato sta mostrando come in PASSATO, che non è assolutamente corretto, come ho bisogno di segnalare errore per il 3 ° set di dati. Per favore fatemi sapere se avete qualche soluzione per le stesse.

Ho provato i seguenti 2 metodi, e non ha funzionato. Per il primo caso di test eseguito 10 volte per 10 dataset, ma anche dopo un fallimento per il 3 ° set di dati, l'esecuzione del test è stato mostrando come in PASSATO che non è corretto in quanto il test dovrebbe essere fallito nel report.

Per il secondo, l'esecuzione del test viene interrotto completamente dopo l'errore di asserzione nel 3 ° set di dati e per il restante insiemi di dati non vengono considerati per l'esecuzione.

Il mio obiettivo è quello di eseguire il banco di prova per tutti i set di dati in una sola volta e quindi controllare il report per ogni guasto.

        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

Migliore risposta

1

pytest verrà interrompere l'esecuzione del primo fallimento di una determinata funzione di test. Significato, se si dispone di 10 casi, ma farli passare per una singola funzione di test (in un ciclo for, per esempio), si fermerà al primo errore (cioè, a passare al prossimo test di una funzione o di uscita, se non ci sono più le funzioni di test). Per risolvere questo problema, il metodo standard è quello di assicurarsi che ogni gruppo di 10 casi essere considerati come distinti i casi di test. Questo è dove parametrizzato infissi entrano in foto.

Si consideri questo esempio:

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

In altre lingue

Questa pagina è in altre lingue

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