Detección de prueba de unidad recursiva con python3 y sin archivos__init__.py
python-3.x unit-testing (2)
Lo busqué, y creo que es muy probable que sea un error.
Así que creé un informe de error de Python y un PR que soluciona el problema para mí.
Clone y vea si también funciona para usted, con la solución a la mejor manera de ejecutar el descubrimiento fue python -m unittest discover -s tests
. De lo contrario, buscará, por ejemplo, entornos virtuales que estén debajo del directorio superior.
Tengo proyecto con la siguiente estructura de directorios:
.
├── requirements.txt
├── main.py
├── tests
├── unit
│ └── test_thing1.py
│ └── test_thing2.py
└── integration
└── test_integration_thing1.py
└── test_integration_thing2.py
Quiero ejecutar todas las pruebas con un comando . Si hago python -m unittest discover
, no se ejecutan pruebas.
Encontré esta pregunta que sugiere agregar un archivo __init__.py
para hacer que los paquetes salgan de la unit
y las carpetas de integration
. La solución funciona, y todas las pruebas se ejecutan de esta manera.
Pero como estoy usando los archivos python3 y __init__.py
con los paquetes de espacio de nombres implícitos , me preguntaba si habría una manera de hacer que esto funcione sin esos archivos __init__.py
.
Utilice pytest. Lo hace descubrir pruebas en carpetas.
En su caso, solo necesita instalarlo en pip ( pip install pytest
) y luego ejecutarlo en su carpeta raíz de pytest tests
.