Uso de skip()
En Pytest se tienen marcas propias como: skip, skipif y xfail, de estar forma, un determinado test podría dejar de ejecutarse bajo determinadas condiciones:
1 2 3 4 5 6 7 8 | import pytest @pytest.mark.skip() def test_mark_for_skip(): pass def test_without_skip_mark(): pass |
Ejecutamos las pruebas y observa que no se ejecutaron aquellas con la marca skip():
1 | pytest -v tests/test_08_mark_for_skip.py |
Se puede agregar una razón para obviar ejecutar un determinado test:
1 2 3 | @pytest.mark.skip(reason="Skip this test for now") def test_mark_for_skip(): pass |
A fin de poder ver la razón por la que un test falla, ejecutamos el siguiente comando:
1 | pytest -v -rxs tests/test_08_mark_for_skip.py |
Uso del skipif()
Pytest también tiene la etiqueta skipif(), la cual podemos utilizar para no ejecutar un test si se cumple determinada condición:
1 2 3 4 | @pytest.mark.skipif(sys.version_info < (3,0), reason="The version of Python is less than 3.0") def test_mark_for_skipif(): pass |
Donde el primer parametro del skipif() es la condición por la cual el test no se debe ejecutar, y el segundo es un motivo o razón descriptiva del por que el test no se esta ejecutando.
Se puede reutilizar la marca, definimos la misma como una variable y luego es utilizada en la función:
1 2 3 4 5 6 | mi_personal_mark = pytest.mark.skipif(sys.version_info < (3,0), reason="The version of Python is more than 3.0") @mi_personal_mark def test_mark_for_skipif(): pass |
Uso de xfail()
Se puede marcar un test con xfail(), el test se ejecutara pero no se reportara el detalle del error cuando este falle:
1 2 3 | @pytest.mark.xfail() def test_mark_for_fail(): raise Exception |
Al ejecutar se presentará el test con una marca XPASS:
1 | pytest -v -rxs tests/test_08_mark_for_skip.py |
Si quitamos la marca de xfail() y el test falla, nos presentará el detalle del error, pero si le agregamos la marca, no presentará ningún mensaje.
Referencias: