So führen Sie Unit-Tests in einer gemeinsamen Testverzeichnisstruktur aus
In Python ist es üblich, Unit-Tests in einem separaten Testverzeichnis zu organisieren . Dies wirft jedoch die Frage auf, wie diese Tests effizient ausgeführt werden können.
Problem
Beim Versuch, python test_antigravity.py aus dem Testverzeichnis auszuführen, ist der Import von Das Antigravitationsmodul fällt aus, weil das Modul nicht auf dem Weg ist. Das Ändern des PYTHONPATH oder die Verwendung anderer Suchpfad-Tricks sind möglicherweise machbar, es mangelt ihnen jedoch an Einfachheit, insbesondere für Benutzer, die lediglich die Testergebnisse überprüfen möchten.
Lösung
Die Der empfohlene Ansatz besteht darin, die Unittest-Befehlszeilenschnittstelle zu verwenden. Seine TestLoader-Klasse fügt das erforderliche Verzeichnis zu sys.path hinzu und löst so das Pfadproblem.
Zum Beispiel in einer Verzeichnisstruktur wie dieser:
new_project ├── antigravity.py └── test_antigravity.py
Sie können die Tests ausführen mit:
$ cd new_project $ python -m unittest test_antigravity
Für eine Verzeichnisstruktur wie die bereitgestellte:
new_project ├── antigravity │ ├── __init__.py │ └── antigravity.py └── test ├── __init__.py └── test_antigravity.py
Sie können eine ähnliche Funktionalität erreichen, indem Sie Deklarieren von Antigravity und Test als Pakete mit __init__.py-Dateien. In den Testmodulen können Sie das Antigravity-Paket und seine Module wie gewohnt importieren.
Spezifische Tests ausführen
Um ein einzelnes Testmodul auszuführen, z. B. test_antigravity.py :
$ cd new_project $ python -m unittest test.test_antigravity
Sie können auch einzelne Testfälle ausführen oder Methoden:
$ python -m unittest test.test_antigravity.GravityTestCase $ python -m unittest test.test_antigravity.GravityTestCase.test_method
Alle Tests ausführen
Sie können die Testerkennung verwenden, um alle Tests automatisch auszuführen. Dies erfordert, dass die Testmodule und -pakete den Namen test*.py haben (anpassbar über das Flag -p oder --pattern):
$ cd new_project $ python -m unittest discover
Benutzer, die Einfachheit bevorzugen, können sie anweisen, Folgendes auszuführen Befehl:
To run the unit tests, do: $ python -m unittest discover
Das obige ist der detaillierte Inhalt vonWie kann man Unit-Tests effizient aus einem separaten Testverzeichnis in Python ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!