Ich habe gehört, dass pytest häufig beim Schreiben von Tests in Python 3 verwendet wird, aber vorerst ist es Standard unittest. Ich habe mich gefragt, ob ich es unter //docs.python.jp/3/library/unittest.html#module-unittest schreiben soll. Deshalb habe ich es zusammengefasst, weil ich einen Versuch und Irrtum gemacht habe.
In Bezug auf die Struktur einiger Pakete scheint die Theorie darin zu bestehen, ein Testverzeichnis auf derselben Ebene wie das Paketverzeichnis zu erstellen.
$ 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')
$ python -m unittest discover tests
In unittest können Sie alle Tests im Verzeichnis mithilfe des Unterbefehls remove ausführen.
Standardmäßig werden alle "test * .py" -Dateien im angegebenen Verzeichnis ausgeführt, Sie können sie jedoch optional ändern.
Es scheint nicht rekursiv Unterverzeichnissen zu folgen.
$ python -m unittest tests.test_foo
Beachten Sie, dass Sie es nicht direkt wie "$ python tests / test_foo.py" ausführen können. Python behandelt das ausgeführte Dateiverzeichnis (/ tests
) als Hierarchie der obersten Ebene, sodass Sie nicht zurückgehen und gepackte Dateien importieren können, was zu einem Fehler führt.
Recommended Posts