Für eine feste und unveränderliche Nicht-Paket Verzeichnisstruktur wie folgen aus:
some_dir/
mod.py
test/
test_mod.py
example_data.txt
was eine nicht -Paket Möglichkeit, test_mod.py
importieren von mod.py
importieren?
Ich bin in diesem Fall auf die Verwendung von Python 2.7 beschränkt.
Ich möchte ein paar Tests für die Funktionen in mod.py
schreiben. Ich möchte ein neues Verzeichnis erstellen test
, das neben mod.py
sitzt und darin gibt es eine Testdatei test/test_mod.py
, die die Funktionen von mod.py
importieren und sie testen sollte.
Aufgrund der bekannten Einschränkungen von relativen Importen, die auf paketbasierter Benennung beruhen, können Sie dies nicht auf einfache Weise tun. Alle Ratschläge zu diesem Thema schlagen jedoch vor, das Skript als Paket zu erstellen und dann relative Importe zu verwenden, was für meinen Anwendungsfall unmöglich ist.
In meinem Fall ist es nicht zulässig für mod.py
als ein Paket gebaut werden und ich kann nicht verlangen, Benutzer von, um es zu installieren. Sie können stattdessen einfach die Datei aus der Versionskontrolle heraus überprüfen und sie einfach verwenden, wie sie wollen, und ich kann diesen Umstand nicht ändern.
Angesichts dieser, was ist eine Möglichkeit, eine einfache, unkomplizierte test
Verzeichnis?
Hinweis: nicht nur eine Test-Datei, die neben mod.py
sitzt, sondern ein tatsächliches Testverzeichnis, da es andere Vermögenswerte wie Testdaten sein, die mit ihm kommen, und das Unterverzeichnis Organisation ist von entscheidenden Bedeutung.
Ich entschuldige mich, wenn dies ein Duplikat ist, aber aus dem Dutzend oder so Permutationen dieser Frage, die ich in meiner Forschung vor dem Entsenden gesehen habe, habe ich keinen einzigen gesehen, der sich damit befasst. Sie alle sagen, Verpackungen zu verwenden, was für meinen Fall keine zulässige Option ist.
Vielleicht nicht die eleganteste Lösung, aber Sie können 'PYTHONPATH' für Ihren Testläufer modifizieren. . . – mgilson