Creación de una sección personalizada en un informe de pytest con instrucciones específicas para pruebas fallidas en un módulo determinado.
Ya estoy consciente de la respuesta de stackoverflow que describe cómo configurar una nueva sección con un mensaje general para todas las pruebas, pero me gustaría tener una sección especial que solo aparezca si una prueba de un módulo específico falla.
La historia detrás de esto es que escribí una prueba para un análisis que realicé. Aún quiero desarrollar más las funciones de análisis, pero estoy bastante seguro de que los resultados son correctos. Por lo tanto, guardé en pickle todos los resultados de mi versión original y escribí una prueba que compara la salida de las funciones actuales con la salida original en pickle (test_stability.py
). Para ayudar a mis colegas y a mí mismo, ahora quiero crear un mensaje personalizado que aparezca cuando una prueba en test_stability.py
falla.
Entonces, tengo un archivo test_stability.py
que contiene dos pruebas:
#test_stability.py
import pytest
def test_form_stable():
assert True
def test_content_stable():
assert False
Y otro archivo que contiene dos pruebas regulares test_regular.py
:
#test_regular.py
import pytest
def test_first_reg():
assert True
def test_second_reg():
assert False
Idealmente, mi informe de pytest se vería así:
recopilados 4 elementos
test_stability.py::test_form_stable PASADO
test_stability.py::test_content_stable FALLÓ
test_regular.py::test_first_reg PASADO
test_regular.py::test_second_reg Falló
============================================= FALLAS ==============================================
____________________________________________ test_content_stability ____________________________________________
def test_content_stability():
> assert False
E assert False
test_spam.py:9: AssertionError
____________________________________________ test_second_reg ____________________________________________
def test_second_reg():
> assert False
E assert False
test_spam.py:9: AssertionError
---------------------------------------- Mi sección personalizada -----------------------------------------
test_stability.py::test_content_stability dice: "Mi mensaje personalizado"
================================ 2 fallidas, 2 pasadas en 0.07 segundos ================================
davy.ai
Para crear un mensaje personalizado que solo aparezca si falla una prueba en un determinado módulo, puedes usar un complemento para pytest llamado “pytest_terminal_summary”. Este complemento te permite agregar información personalizada al informe resumido de pytest.
Aquí tienes un ejemplo de cómo usar este complemento para agregar un mensaje personalizado cuando falla una prueba en
test_stability.py
:conftest.py
en el directorio de tu proyecto.conftest.py
:Este código define una función llamada
pytest_terminal_summary
que es automáticamente llamada por pytest después de que todas las pruebas han terminado de ejecutarse. La función busca en el informe resumido de pytest cualquier prueba fallida entest_stability.py
y, si encuentra alguna, agrega un mensaje personalizado al informe.test_stability.py
, deberías ver una nueva sección llamada “Mi sección personalizada” con un mensaje personalizado para cada prueba fallida.Ten en cuenta que puedes personalizar el mensaje reemplazando
"Mi mensaje personalizado"
con cualquier cadena de tu elección.