Al usar py.test, dos pruebas llamadas de la misma manera en diferentes directorios hacen que py.test falle. ¿Porqué es eso? ¿Cómo puedo cambiar esto sin cambiar el nombre de todas las pruebas?py.test: prueba de detección fallida cuando las pruebas en directorios diferentes se llaman igual
Para duplicar hacer:
; cd /var/tmp/my_test_module
; mkdir -p ook/test
; mkdir -p eek/test
; touch ook/test/test_proxy.py
; touch eek/test/test_proxy.py
; py.test
============================= test session starts ==============================
platform linux2 -- Python 2.7.3 -- pytest-2.2.4
collected 0 items/1 errors
==================================== ERRORS ====================================
___________________ ERROR collecting ook/test/test_proxy.py ____________________
import file mismatch:
imported module 'test_proxy' has this __file__ attribute:
/home/ygolanski/code/junk/python/mymodule/eek/test/test_proxy.py
which is not the same as the test file we want to collect:
/home/ygolanski/code/junk/python/mymodule/ook/test/test_proxy.py
HINT: remove __pycache__/.pyc files and/or use a unique basename for your test file modules
=========================== 1 error in 0.01 seconds ============================
Estoy de acuerdo en que la necesidad de un __init__.py tiene sentido. Si una prueba no está en un paquete, entonces es esencialmente un módulo de nivel superior (en el OP, test_proxy) y debería haber solo uno. Al colocar los módulos de prueba en paquetes relevantes (ook y eek), proporciona un espacio de nombres adecuado para las pruebas. Yo digo que el status quo es lo mejor. Podría aliviar el dolor tener el mensaje de error vinculado a esta pregunta o a algo en los documentos que explique el razonamiento y la técnica para solucionar el problema. –
Solo una nota que py.test docs específicamente desaconseja poner '__init __. Py' en directorios de prueba: _" evite archivos '__init __. Py' en sus directorios de prueba. De esta manera sus pruebas pueden ejecutarse fácilmente contra una versión instalada de mypkg, independientemente de si el paquete instalado contiene las pruebas o no "_. Tomado de [pytest.org - Buenas prácticas de integración] (http://pytest.org/latest/goodpractises.html#choosing-a-test-layout-import-rules). – famousgarkin
Actualización: La recomendación en el comentario de @ famousgarkin anterior y la respuesta (https://stackoverflow.com/a/21942491/260303) parece que ya no está en los documentos (al menos buscar "evitar" no muestra la cita arriba): https://docs.pytest.org/en/latest/goodpractices.html#tests-as-part-of-application-code. De hecho, los ejemplos en ese enlace muestran '__init __. Py' en los directorios de prueba, por lo que parece que la respuesta aceptada es la correcta. –