545 votes

Où vont les tests unitaires de Python ?

Si vous écrivez une application ou une bibliothèque, où les fichiers de test d’unité vont ?

Il est bon de séparer les fichiers de test à partir du code de l’application principale, mais il est difficile à placer dans un sous-répertoire de « tests » à l’intérieur de la racine de l’application, car il les rend plus difficiles à importer les modules que vous allez tester.

Y a-t-il une meilleure pratique ici ?

239voto

user6868 Points 1796

Pour un fichier module.py, le test unitaire doit normalement être appelés module_test.py, à la suite de Pythonic conventions de nommage.

Il y a plusieurs communément acceptée endroits pour mettre module_test.py:

  1. Dans le même répertoire que module.py.
  2. En ../tests/module_test.py (au même niveau que le répertoire de code).
  3. En tests/module_test.py (un niveau sous le répertoire de code).

Je préfère la n ° 1 pour sa simplicité de trouver les tests et de les importer. Quelle que soit la construction du système que vous utilisez peut facilement être configuré pour exécuter les fichiers se terminant en _test.

51voto

Cristian Points 10133

Une pratique courante est de mettre le répertoire tests dans le même répertoire que votre module/paquet. Donc, si votre module a été appelé foo.py votre annuaire de mise en page pourrait ressembler à:

parent_dir/
  foo.py
  tests/

Bien sûr, il n'y a pas qu'une seule façon de le faire. Vous pouvez aussi faire un essais sous-répertoire et importer le module à l'aide absolue à l'importation.

Partout où vous mettez vos tests, je vous recommande l'utilisation de nez à les exécuter. Le nez de la recherche par le biais de vos répertoires pour les tests. De cette façon, vous pouvez mettre des tests où ils font le plus de sens sur le plan organisationnel.

32voto

Paul Hildebrandt Points 1455

Nous avons eu la même question lors de l’écriture Pythoscope (http://pythoscope.org), qui génère des tests unitaires pour les programmes Python. Nous avons interrogé les gens sur les essais en liste python avant que nous avons choisi un répertoire, il y avait beaucoup d’opinions différentes. En fin de compte, nous avons choisi de mettre un dossier « tests » dans le même répertoire que le code source. Dans ce répertoire, nous générons un fichier de test pour chaque module dans le répertoire parent.

26voto

Thomas Andrews Points 576

J'ai aussi tendance à mettre mes tests unitaires dans le fichier lui-même, comme Jeremy Cantrell au-delà des notes, même si j'ai tendance à ne pas mettre la fonction de test dans le corps principal, mais plutôt de tout mettre dans un

if __name__ == '__main__':
   do tests...

le bloc. Cela finit par l'ajout de la documentation dans le fichier "exemple de code" pour savoir comment utiliser le python fichier que vous souhaitez tester.

Je dois ajouter, j'ai tendance à écrire très serré modules/classes. Si vos modules nécessitent un très grand nombre de tests, vous pouvez les mettre dans un autre, mais même alors, je serais encore ajouter:

if __name__ == '__main__':
   import tests.thisModule
   tests.thisModule.runtests

Cela permet à quiconque de la lecture de votre code source de savoir où chercher pour le code de test.

14voto

John Millikin Points 86775

J’utilise un `` directory et puis importez les modules de l’application principale à l’aide relative des importations. Ainsi en MyApp/tests/foo.py, il pourrait être :

pour importer le `` module.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X