Maison >développement back-end >Tutoriel Python >Comment exécuter efficacement des tests unitaires à partir d'un répertoire de tests distinct en Python ?

Comment exécuter efficacement des tests unitaires à partir d'un répertoire de tests distinct en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-27 03:04:13764parcourir

How to Efficiently Run Unit Tests from a Separate Test Directory in Python?

Comment exécuter des tests unitaires dans une structure de répertoires de tests commune

En Python, il est courant d'organiser les tests unitaires dans un répertoire de tests distinct . Cependant, cela soulève la question de savoir comment exécuter ces tests efficacement.

Problème

Lors de la tentative d'exécution de python test_antigravity.py à partir du répertoire de test, l'importation de le module antigravité échoue car le module n'est pas sur le chemin. Modifier le PYTHONPATH ou utiliser d'autres astuces de chemin de recherche peuvent être réalisables, mais ils manquent de simplicité, en particulier pour les utilisateurs qui souhaitent simplement vérifier les résultats du test.

Solution

La L'approche recommandée consiste à utiliser l'interface de ligne de commande unittest. Sa classe TestLoader ajoute le répertoire nécessaire à sys.path, résolvant ainsi le problème de chemin.

Par exemple, dans une structure de répertoires comme celle-ci :

new_project
├── antigravity.py
└── test_antigravity.py

Vous pouvez exécuter les tests avec :

$ cd new_project
$ python -m unittest test_antigravity

Pour une structure de répertoires comme celle fournie :

new_project
├── antigravity
│   ├── __init__.py
│   └── antigravity.py
└── test
    ├── __init__.py
    └── test_antigravity.py

Vous pouvez obtenir des fonctionnalités similaires en déclarant à la fois antigravité et test sous forme de packages avec des fichiers __init__.py. Dans les modules de test, vous pouvez importer le package antigravity et ses modules comme d'habitude.

Exécuter des tests spécifiques

Pour exécuter un seul module de test, tel que test_antigravity.py :

$ cd new_project
$ python -m unittest test.test_antigravity

Vous pouvez également exécuter des cas de tests individuels ou méthodes :

$ python -m unittest test.test_antigravity.GravityTestCase
$ python -m unittest test.test_antigravity.GravityTestCase.test_method

Exécuter tous les tests

Vous pouvez utiliser la découverte de tests pour exécuter automatiquement tous les tests. Cela nécessite que les modules et packages de test soient nommés test*.py (personnalisable via l'indicateur -p ou --pattern) :

$ cd new_project
$ python -m unittest discover

Pour les utilisateurs qui préfèrent la simplicité, vous pouvez leur demander d'exécuter ce qui suit commande :

To run the unit tests, do:
$ python -m unittest discover

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn