Die übliche Verzeichnisstruktur selbst für ein einfaches Python-Modul scheint darin zu bestehen, die Unit-Tests in ihre eigenen test
Verzeichnis:
new_project/
antigravity/
antigravity.py
test/
test_antigravity.py
setup.py
etc.
siehe zum Beispiel dies Anleitung zum Python-Projekt .
Meine Frage ist einfach Wie werden die Tests in der Regel durchgeführt? Ich vermute, das ist für alle außer mir offensichtlich, aber man kann nicht einfach python test_antigravity.py
aus dem Testverzeichnis als seine import antigravity
wird fehlschlagen, da das Modul nicht im Pfad enthalten ist.
Ich weiß, dass ich PYTHONPATH und andere Suchpfad-bezogene Tricks ändern könnte, aber ich kann nicht glauben, dass das der einfachste Weg ist - es ist in Ordnung, wenn Sie der Entwickler sind, aber nicht realistisch zu erwarten, dass Ihre Benutzer es benutzen, wenn sie nur überprüfen wollen, ob die Tests erfolgreich sind.
Die andere Alternative ist, die Testdatei einfach in das andere Verzeichnis zu kopieren, aber das scheint etwas dumm und verfehlt den Sinn, sie zunächst in einem separaten Verzeichnis zu haben.
Wenn Sie also gerade den Quellcode meines neuen Projekts heruntergeladen hätten, wie würden Sie die Unit-Tests ausführen? Ich würde eine Antwort bevorzugen, die es mir ermöglicht, meinen Benutzern zu sagen: "Um die Unit-Tests auszuführen, machen Sie X."
6 Stimmen
@EMP Die richtige Lösung, wenn Sie den Suchpfad festlegen müssen, ist,... den Suchpfad festzulegen. Welche Art von Lösung haben Sie erwartet?
9 Stimmen
@CarlMeyer eine andere bessere Lösung ist die Verwendung der
unittest
Befehlszeilenschnittstelle wie in meinem Antwort unten damit Sie das Verzeichnis nicht zum Pfad hinzufügen müssen.65 Stimmen
Das gilt auch für mich. Ich habe gerade damit begonnen, meine allerersten Unit-Tests für ein kleines Python-Projekt zu schreiben und habe mehrere Tage gebraucht, um mich mit der Tatsache auseinanderzusetzen, dass ich nicht ohne weiteres einen Test ausführen kann, während ich meine Quellen in einem src-Verzeichnis und die Tests in einem Test-Verzeichnis aufbewahre, anscheinend mit einem der vorhandenen Test-Frameworks. Ich werde schließlich Dinge akzeptieren, einen Weg finden; aber dies war eine sehr frustrierende Einführung. (Und ich bin ein Unit-Testing-Veteran außerhalb von Python.)