Wie importiere ich ein Modul aus einem übergeordneten Verzeichnis? (unit test Zwecke)

8

Ich habe gerade den Kernabschnitt eines Projekts fertiggestellt, an dem ich gerade arbeite, und ich möchte einen Test dafür schreiben, indem ich unittest benutze, bevor ich fortfahre. Ich bin mir bewusst, dass ich das früher hätte tun sollen, aber als ich anfing, kannte ich Python nicht, also .. was auch immer ..

Was ich erreichen möchte: Ich habe ein Teilpaket des Hauptpakets, das alle Module enthält, die ich darin testen möchte. Ich möchte ein subsubpackage in das schreiben, was "Tests" genannt wird oder etwas, das dann alle meine Testfälle enthält, die ich in der Lage sein würde, außerhalb des Pakets zu einer Testsuite zu aggregieren, damit ich schließlich den Test durchführen kann das gesamte Projekt in einem Rutsch.

Die Struktur ist etwa so:

%Vor%

Problem, das ich habe:

someModuleTests muss someModule aus dem übergeordneten Paket importieren, damit es seine Methoden testen kann. Das scheint nicht zu funktionieren. Ich bekomme verschiedene Fehler wie:

%Vor%

Wie auch immer, ich erwarte es nur, weil ich ein Python-Noob bin! Ich habe meine eigenen Ideen, wie ich das für dieses Projekt machen werde, weil natürlich jeder anders ist, aber jeder allgemeine Rat zur Strukturierung von mittelgroßen Python-Projekten wird ebenfalls geschätzt.

    
Max Spencer 03.08.2011, 10:27
quelle

3 Antworten

13

Führen Sie den Komponententest aus dem übergeordneten Verzeichnis aus, so dass sich das Verzeichnis in Ihrem PYTHONPATH befindet (das aktuelle Arbeitsverzeichnis ist immer). Dies geschieht, indem Sie die Testdatei aus Ihrem übergeordneten Verzeichnis ausführen oder etwas wie nosttest verwenden, das rekursiv nach allen Tests in Ihrem Paket sucht.

Benutze keine relativen Importe, sie verursachen solche Dinge. Hacke deinen PYTHONPATH und / oder sys.path nicht, um zu versuchen, ihn zu reparieren.

    
ikanobori 03.08.2011, 10:29
quelle
1

Wenn Sie Ihren Code ausführen können, sollte Ihr PYTHONPATH bereits richtig eingestellt sein. Was Sie tun müssen, ist das Modul anzugeben, das Sie importieren möchten, z. B.

%Vor%     
Nicola Musatti 03.08.2011 10:33
quelle
1

In Anbetracht der Tatsache, dass Sie zum Ausführen der Tests Befehlszeilentools verwenden, können Sie Docs und haben etwas wie das Folgende:

%Vor%     
Yan Foto 16.12.2015 16:26
quelle

Tags und Links