De temps en temps, je me retrouve à vérifier le sujet du placement de test, et à chaque fois la majorité recommande une structure de dossiers séparée à côté du code de la bibliothèque, mais je trouve que chaque fois les arguments sont les mêmes et ne sont pas si convaincants. Je finis par mettre mes modules de test quelque part à côté des modules de base.
La principale raison de cette opération est la refactorisation .
Quand je déplace des choses, je veux que les modules de test se déplacent avec le code; il est facile de perdre des tests s'ils sont dans une arborescence distincte. Soyons honnêtes, tôt ou tard , vous vous retrouvez avec une structure de dossiers totalement différent, comme django , flacon et bien d' autres. Ce qui est bien si vous ne vous en souciez pas.
La principale question que vous devez vous poser est la suivante:
Suis-je en train d'écrire:
- a) bibliothèque réutilisable ou
- b) construire un projet qui regroupe des modules semi-séparés?
Si un:
Un dossier séparé et l'effort supplémentaire pour maintenir sa structure peuvent être mieux adaptés. Personne ne se plaindra du déploiement de vos tests en production .
Mais il est également tout aussi facile d'exclure les tests de la distribution lorsqu'ils sont mélangés aux dossiers principaux; mettez ceci dans le setup.py :
find_packages("src", exclude=["*.tests", "*.tests.*", "tests.*", "tests"])
Si b:
Vous pouvez souhaiter - comme chacun de nous - que vous écriviez des bibliothèques réutilisables, mais la plupart du temps leur vie est liée à la vie du projet. La capacité de maintenir facilement votre projet devrait être une priorité.
Ensuite, si vous avez fait du bon travail et que votre module convient parfaitement à un autre projet, il sera probablement copié - non bifurqué ou transformé dans une bibliothèque distincte - dans ce nouveau projet, et déplacera les tests qui se trouvent à côté de lui dans la même structure de dossiers est facile par rapport à la recherche de tests dans un gâchis devenu un dossier de test séparé. (Vous pouvez affirmer que cela ne devrait pas être un gâchis en premier lieu, mais soyons réalistes ici).
Donc, le choix est toujours le vôtre, mais je dirais qu'avec des tests mixtes, vous réalisez les mêmes choses qu'avec un dossier séparé, mais avec moins d'efforts pour garder les choses en ordre.