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.
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')
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.
$ 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.