es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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 ================================
Tags:  , , ,

Answer

  1. Avatar for 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:

    1. Crea un nuevo archivo llamado conftest.py en el directorio de tu proyecto.
    2. Agrega el siguiente código al archivo conftest.py:
    def pytest_terminal_summary(terminalreporter, exitstatus, config):
        failed_tests = []
        for rep in terminalreporter.stats.get('failed', []):
            if 'test_stability.py' in rep.nodeid:
                failed_tests.append(rep.nodeid.split('::')[-1])
        if failed_tests:
            terminalreporter.write_sep('-', 'Mi sección personalizada')
            for test in failed_tests:
                terminalreporter.write_line(f'{test} dice: "Mi mensaje personalizado"')
    

    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 en test_stability.py y, si encuentra alguna, agrega un mensaje personalizado al informe.

    1. Ejecuta tus pruebas nuevamente y observa el informe resumido de pytest. Si falla una prueba en 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.

Comments are closed.