Heim > Backend-Entwicklung > Python-Tutorial > Wie kann man Unit-Tests effizient aus einem separaten Testverzeichnis in Python ausführen?

Wie kann man Unit-Tests effizient aus einem separaten Testverzeichnis in Python ausführen?

Linda Hamilton
Freigeben: 2024-11-27 03:04:13
Original
758 Leute haben es durchsucht

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

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
Nach dem Login kopieren

Sie können die Tests ausführen mit:

$ cd new_project
$ python -m unittest test_antigravity
Nach dem Login kopieren

Für eine Verzeichnisstruktur wie die bereitgestellte:

new_project
├── antigravity
│   ├── __init__.py
│   └── antigravity.py
└── test
    ├── __init__.py
    └── test_antigravity.py
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

Benutzer, die Einfachheit bevorzugen, können sie anweisen, Folgendes auszuführen Befehl:

To run the unit tests, do:
$ python -m unittest discover
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage