Pytest - Xfail / Skip Tests

Dans ce chapitre, nous découvrirons les tests Skip et Xfail dans Pytest.

Maintenant, considérez les situations ci-dessous -

  • Un test n'est pas pertinent pendant un certain temps pour certaines raisons.
  • Une nouvelle fonctionnalité est en cours d'implémentation et nous avons déjà ajouté un test pour cette fonctionnalité.

Dans ces situations, nous avons la possibilité d'échouer le test ou de sauter les tests.

Pytest exécutera le test xfailed, mais il ne sera pas considéré comme une partie des tests ayant échoué ou réussi. Les détails de ces tests ne seront pas imprimés même si le test échoue (rappelez-vous que pytest imprime généralement les détails du test échoué). Nous pouvons xfail tests en utilisant le marqueur suivant -

@pytest.mark.xfail

Sauter un test signifie que le test ne sera pas exécuté. Nous pouvons sauter les tests en utilisant le marqueur suivant -

@pytest.mark.skip

Plus tard, lorsque le test devient pertinent, nous pouvons supprimer les marqueurs.

Modifier le test_compare.py nous devons déjà inclure les marqueurs xfail et 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

Exécutez le test à l'aide de la commande suivante -

pytest test_compare.py -v

Lors de l'exécution, la commande ci-dessus générera le résultat suivant -

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
============================