Test de execuție este oprit după o afirmație eroare în pytest

0

Problema

Pentru datele condus de testare, dacă există 10 de seturi de date, și afirmația nu reușește pentru al 3-lea set de date, apoi restul de 7 seturi de date nu sunt luate în considerare pentru executie si programul va fi oprită în acel moment complet. Am încercat de removeing "ridica e" linia și acel moment toate seturile de date sunt luate în considerare pentru executie, dar la final, starea este arată ca TRECUT, care este absolut nu este corect ca trebuie sa raportez eșec pentru al 3-lea set de date. Vă rog să-mi spuneți dacă aveți orice soluții pentru același.

Am încercat următoarele 2 metode, și nu au de lucru. Pentru primul test executat de 10 ori pentru 10 seturi de date, dar chiar și după un eșec pentru al 3-lea set de date, testul de execuție de stare este afișat ca a TRECUT ceea ce nu este corect ca testul caz, ar trebui să fie nu a reușit în raport.

Pentru cel de-al doilea, testul de execuție este oprit complet după eșec afirmație în al 3-lea set de date, iar restul de seturi de date nu sunt luate în considerare pentru execuție.

Scopul meu este de a executa caz test pentru toate seturile de date la o dată și apoi verificați raportul pentru orice eșec.

        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

Cel mai bun răspuns

1

pytest se va opri execuția pe primul eșec pentru o anumită funcție de testare. Adică, dacă ai 10 cazuri, dar le trece la o singură funcție de testare (într-o buclă, de exemplu), se va opri la primul eșec (de exemplu, sari la următorul funcția de testare, sau de ieșire dacă nu există mai multe funcții de test). Pentru a rezolva acest lucru, mod standard este de a face sigur că fiecare dintre cele 10 cazuri, să fie considerate ca separate de cazuri de testare. Acest lucru este în cazul în care parametrizat corpuri intră în imagine.

Luați în considerare acest exemplu:

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

În alte limbi

Această pagină este în alte limbi

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