Pytest - Xfail / Ignorar testes

Neste capítulo, aprenderemos sobre os testes Skip e Xfail no Pytest.

Agora, considere as situações abaixo -

  • Um teste não é relevante por algum tempo devido a alguns motivos.
  • Um novo recurso está sendo implementado e já adicionamos um teste para esse recurso.

Nessas situações, temos a opção de xfail no teste ou pular os testes.

O Pytest executará o teste xfailed, mas não será considerado como parte dos testes reprovados ou aprovados. Os detalhes desses testes não serão impressos mesmo se o teste falhar (lembre-se de que o pytest geralmente imprime os detalhes do teste que falhou). Podemos xfail nos testes usando o seguinte marcador -

@pytest.mark.xfail

Ignorar um teste significa que o teste não será executado. Podemos pular os testes usando o seguinte marcador -

@pytest.mark.skip

Mais tarde, quando o teste se tornar relevante, podemos remover os marcadores.

Edite o test_compare.py já temos que incluir os marcadores xfail e skip -

import pytest
@pytest.mark.xfail
@pytest.mark.great
def test_greater():
   num = 100
   assert num > 100

@pytest.mark.xfail
@pytest.mark.great
def test_greater_equal():
   num = 100
   assert num >= 100

@pytest.mark.skip
@pytest.mark.others
def test_less():
   num = 100
   assert num < 200

Execute o teste usando o seguinte comando -

pytest test_compare.py -v

Após a execução, o comando acima irá gerar o seguinte resultado -

test_compare.py::test_greater xfail
test_compare.py::test_greater_equal XPASS
test_compare.py::test_less SKIPPED
============================ 1 skipped, 1 xfailed, 1 xpassed in 0.06 seconds
============================