Structure de répertoire lors de l'écriture de tests avec unittest standard Python 3

J'ai entendu dire que pytest est souvent utilisé lors de l'écriture de tests en Python 3, mais pour le moment, il est standard unittest. Je me suis demandé si je devais l'écrire à //docs.python.jp/3/library/unittest.html#module-unittest), alors je l'ai résumé par essais et erreurs.

Structure de répertoire et exemple de code

En ce qui concerne la structure de certains packages, il semble que la théorie consiste à créer un répertoire de test au même niveau que le répertoire de package.

$ tree
.
├── foo
│   ├── foo.py
│   ├──   :
│   └── xxx.py
└── tests
    ├── test_foo.py
    ├──   :
    └── test_xxx.py

foo/foo.py


class Foo:

    def say(self):
        return 'foo'

tests/test_foo.py


from unittest import TestCase
from foo.foo import Foo

class TestFoo(TestCase):

    def test_say(self):
        self.assertEqual(Foo().say(), 'foo')

Essai

Exécutez tous les cas de test dans le répertoire tests

$ python -m unittest discover tests

Dans unittest, vous pouvez exécuter tous les tests du répertoire en utilisant la sous-commande Discover.

Par défaut, tous les fichiers test * .py dans le répertoire spécifié sont exécutés, mais vous pouvez éventuellement les modifier.

Il ne semble pas suivre les sous-répertoires de manière récursive.

Exécuter un seul scénario de test

$ python -m unittest tests.test_foo

Notez que vous ne pouvez pas l'exécuter directement comme $ python tests / test_foo.py. Python traite le répertoire de fichiers exécuté (/ tests) comme une hiérarchie de niveau supérieur, vous ne pouvez donc pas sauvegarder et importer des fichiers packagés, ce qui entraîne une erreur.

Recommended Posts

Structure de répertoire lors de l'écriture de tests avec unittest standard Python 3
Lors de l'écriture de tests avec python unittest, utilisez doCleanups pour les setUps qui peuvent échouer
Comment exécuter des tests avec Python unittest
Remarques sur l'utilisation du test unittest standard Python
Erreur lors de la lecture avec python
Créer un répertoire avec python
Représentation matricielle avec entrée standard Python
Exclure les cas spécifiés avec Python unittest
Conforme à la norme de codage Python PEP8
Lire et écrire NetCDF avec Python
Lire et écrire du CSV avec Python
RPC complété avec des modules Python 3 standard
Quand matplotlib ne fonctionne pas avec python2.7
Lors de l'utilisation de MeCab avec python dans virtualenv
Précautions lors de l'utilisation de six avec Python 2.5
Lors de l'écriture d'un programme en Python
[Python] Formater quand to_csv avec des pandas
Que dois-je faire avec la structure de répertoires Python après tout?
Résolution de "Python .h: aucun fichier ou répertoire de ce type" lors de l'installation de uWSGI avec Python 3.8
Conseils (structure de contrôle) à connaître lors de la programmation de la compétition avec Python2
Conseils (structure de données) à connaître lors de la programmation de compétitions avec Python2
Calculer et afficher le poids standard avec python
Extrait de code pour une recherche de bits complète avec python
Remarques lors de la création d'un environnement avec python
Points à noter lors de la résolution de problèmes DP avec Python
Lire et écrire des fichiers JSON avec Python
UnicodeEncodeError lutte avec la sortie standard de python3
Utilisez le pilote Web phantomjs de sélénium avec unittest de python
[Astuces] Écriture facile à lire lors de la connexion de fonctions en Python
Erreur lors de l'installation d'un module avec Python pip
Environnement et utilisation recommandés lors du développement avec Python
Conseils personnels lorsque vous faites diverses choses avec Python 3
Précautions lors du traitement des structures de contrôle dans Python 2.6
Enquête lorsque l'importation ne peut pas être effectuée avec python
Je souhaite utiliser le répertoire temporaire avec Python2
Encodage de caractères lors du traitement de fichiers en Python 3
[python] [vscode] Lorsque vous vous fâchez avec space-tab-mixed
Diviser les fichiers lors de l'écriture du plugin vim en python
Archivez et compressez tout le répertoire avec python
La lecture et l'écriture s'adaptent aux fichiers avec Python (mémo)
Lire les fichiers wav avec uniquement le package standard Python
[Développement Web avec Python] Précautions lors de l'enregistrement des cookies
Exemple de lecture et d'écriture de CSV avec Python
Qu'utilisez-vous lorsque vous testez avec Python?
[Python] Personnalisez la palette de couleurs lors du dessin de graphiques avec matplotlib
Écrire des notes lors de l'exécution d'un fichier exécutable python ordinaire (fichier contenant argparse) avec le notebook Jupyter