Test vykonanie dostane zastavené po tvrdenia, chyba v pytest

0

Otázka

Na základe údajov testovanie, ak existuje 10 množiny údajov, a tvrdenie, zlyhá pre 3. súbor údajov, potom zvyšok 7 súborov údajov, nie sú považované za vykonanie a program dostane zastavil v tomto bode úplne. Som sa snažil o removeing je "zvýšiť e" line a že čas všetky súbory údajov sú považované za výkon, ale na konci, stav ukazuje, ako PREŠLI, ktoré nie je absolútne správne, ako som sa musia hlásiť poruchy pre 3. údajmi. Prosím, dajte mi vedieť, ak máte nejaké riešenia pre rovnaké.

Snažil som sa na nasledujúce 2 metódy, a to nie je práca. Na prvom z nich, vykonaný test case 10 krát za 10 súbormi, ale aj po neúspechu na 3. dokumentačný materiál, test vykonanie stav je zobrazené ako PREŠLI, ktoré nie je správne ako testovací prípad by mal byť neúspešné v správe.

Na druhom teste výkon dostane prestal úplne po tvrdenie, zlyhanie v 3. dokumentačný materiál a ostatné súbory údajov sa nepovažuje za výkon.

Mojím cieľom je vykonať test case pre všetkých dát naraz a potom skontrolujte správa za akékoľvek zlyhanie.

        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

Najlepšiu odpoveď

1

pytest zastaví exekúciu na prvom neúspechu pre daný test funkcie. Význam, ak ste mať 10 prípadoch, ale preniesť ich do jednej testovacej funkcie (v slučky, pre eg), sa zastaví na prvom neúspechu (napr., skok na ďalší test funkcie, alebo ukončiť, ak nie sú žiadne ďalšie testu funkcie). Ak chcete vyriešiť tento štandardný spôsob je, aby sa ubezpečil, že každý z týchto 10 prípadoch sa považujú za samostatné testovacie prípady. To je miesto, kde parametrizovateľné zariadenia prichádzajú do obrazu.

Zoberme si tento príklad:

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

V iných jazykoch

Táto stránka je v iných jazykoch

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