A execução do teste fica parado depois de um erro de asserção no pytest

0

Pergunta

Para os dados orientado a testes, se existem 10 conjuntos de dados, e a asserção de falha para o 3º conjunto de dados e, em seguida, o resto do 7 conjuntos de dados não são considerados para a execução e o programa fica parado naquele ponto completamente. Eu tentei por removeing a erguer "e" linha e que o tempo todos os conjuntos de dados são considerados para a execução, mas no final, o estado está mostrando como o PASSADO que é absolutamente correto, como eu preciso de relatório de falha para o 3º conjunto de dados. Por favor, deixe-me saber se você tem alguma solução para o mesmo.

Eu tentei os 2 seguintes métodos, e não funcionou. Para o primeiro caso de teste executado 10 vezes para 10 conjuntos de dados, mas mesmo depois de uma falha para o 3º conjunto de dados, a execução do teste de estado está mostrando como o PASSADO que não é correto, como o caso de teste deve ser falha no relatório.

Para o segundo, a execução do teste fica parado completamente após falha de asserção no 3º conjunto de dados e os restantes conjuntos de dados não são considerados para a execução.

Meu objetivo é executar o caso de teste para todos os conjuntos de dados de uma só vez e, em seguida, verifique o relatório por qualquer falha.

        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

Melhor resposta

1

pytest irá parar a execução na primeira falha para uma dada função de teste. Ou seja, se você tem 10 casos, mas passá-los para uma única função de teste (em um loop for, por exemplo), ele vai parar na primeira falha (por exemplo, ir para o próximo teste de função, ou sair se não há mais funções de teste). Para resolver isso, a forma padrão é certificar-se de que cada um desses 10 casos, ser considerado como separado de casos de teste. Este é o lugar onde parametrizando elétricos vêm na imagem.

Considere este exemplo:

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

Em outros idiomas

Esta página está em outros idiomas

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