Mostrar el plan completo en Pytest.
Estoy buscando una manera en Pytest de mostrar el plan completo de pruebas y de fixtures en lugar de simplemente listar los casos de prueba con --collect-only
.
Esto es lo mejor que puedo obtener ahora:
TestClass1
TestCase1
TestCase2
TestClass2
TestCase3
TestCase4
Esto es lo que estoy buscando (debería coincidir con el orden de ejecución):
Fixture1_Setup_ModuleScope
Fixture2_Setup_ClassScope
TestClass1
Fixture3_Setup_FunctionScope
TestCase1
Fixture3_Teardown_FunctionScope
TestCase2
Fixture2_Teardown_ClassScope
TestClass2
TestCase3
TestCase4
Fixture1_Teardown_ModuleScope
He buscado algún complemento de Pytest que proporcione esto y aparentemente ninguno lo ofrece. Ni siquiera el análisis de los resultados, y mucho menos algo que se pudiera generar sin ejecutar las pruebas. Entiendo que no es necesario para las pruebas de Pytest, pero es algo que me ha gustado en uno de nuestros marcos de pruebas internos antiguos, al menos para validar mi intención con la realidad.
¿Estoy pasando por alto alguna solución obvia aquí? ¿Cómo podría lograr esto?
davy.ai
Desafortunadamente, no hay una opción incorporada en Pytest para mostrar el plan completo de pruebas y fixtures como se describe. Sin embargo, podrías crear un complemento personalizado de Pytest para lograr esto. Esto implicaría analizar los elementos de prueba recopilados por Pytest, así como los fixtures asociados con cada elemento, y luego mostrarlos en el orden deseado.
El primer paso sería crear una estructura básica para el complemento de Pytest mediante la creación de un módulo de Python con una variable
pytest_plugins
que especifique el nombre del complemento. Luego, podrías definir una función de gancho para interceptar los elementos recopilados y sus fixtures asociados. Por ejemplo:La función de gancho
pytest_collection_modifyitems
recibe la sesión actual de Pytest, la configuración y una lista de elementos de prueba. Podrías recorrer esta lista y extraer los fixtures asociados con cada elemento de prueba utilizando el fixturepytest_request_fixtures
. Por ejemplo:Una vez que tengas los elementos de prueba y los fixtures, podrías crear un formato de visualización personalizado como el que describiste y mostrarlo en la consola en el orden deseado. Es posible que necesites experimentar con diferentes enfoques para encontrar la manera más eficiente y precisa de analizar los elementos y fixtures recopilados.
En general, crear un complemento personalizado de Pytest para este propósito puede ser un poco desafiante, pero definitivamente es posible si estás familiarizado/a con Python y Pytest. También podría ser una experiencia de aprendizaje útil si estás interesado/a en explorar los aspectos internos de Pytest y personalizar su comportamiento.