De vez en cuando me encuentro revisando el tema de la colocación de la prueba, y cada vez la mayoría recomienda una estructura de carpetas separada al lado del código de la biblioteca, pero encuentro que cada vez los argumentos son los mismos y no son tan convincentes. Termino colocando mis módulos de prueba en algún lugar al lado de los módulos principales.
La razón principal para hacer esto es: refactorización .
Cuando muevo cosas, quiero que los módulos de prueba se muevan con el código; Es fácil perder las pruebas si están en un árbol separado. Seamos honestos, tarde o temprano terminas con una estructura de carpetas totalmente diferente, como django , flask y muchos otros. Lo cual está bien si no te importa.
La pregunta principal que debe hacerse es esta:
¿Estoy escribiendo:
- a) biblioteca reutilizable o
- b) construyendo un proyecto que agrupa algunos módulos semi-separados?
Si un:
Una carpeta separada y el esfuerzo adicional para mantener su estructura pueden ser más adecuados. Nadie se quejará de que sus pruebas se implementen en producción .
Pero también es tan fácil excluir las pruebas de ser distribuidas cuando se mezclan con las carpetas principales; pon esto en setup.py :
find_packages("src", exclude=["*.tests", "*.tests.*", "tests.*", "tests"])
Si b:
Puede desear, como todos nosotros, que esté escribiendo bibliotecas reutilizables, pero la mayoría de las veces su vida está ligada a la vida del proyecto. La capacidad de mantener fácilmente su proyecto debe ser una prioridad.
Luego, si hizo un buen trabajo y su módulo se adapta bien a otro proyecto, probablemente se copiará, no se bifurcará o se convertirá en una biblioteca separada, en este nuevo proyecto y se moverán las pruebas que se encuentran junto a él en la misma estructura de carpetas es fácil en comparación con pescar pruebas en un desastre en el que se había convertido una carpeta de prueba separada. (Puede argumentar que no debería ser un desastre en primer lugar, pero seamos realistas aquí).
Entonces, la elección sigue siendo suya, pero diría que con las pruebas confusas se logran las mismas cosas que con una carpeta separada, pero con menos esfuerzo para mantener las cosas ordenadas.