2016-05-26 9 views
3

Ich habe Probleme beim Importieren von Dateien in meine Testdateien, die ich mit py.test ausführen möchte.Importieren von Modulen aus einem Geschwisterverzeichnis zur Verwendung mit py.test

Ich habe eine Struktur Projekt wie folge:

/ProjectName 
| 
|-- /Title 
| |-- file1.py 
| |-- file2.py 
| |-- file3.py 
| |-- __init__.py 
| 
|-- /test 
| |-- test_file1.py 

Ich habe nicht in der Lage gewesen, alle Import-Anweisungen mit pytest innerhalb der test_file1.py Datei arbeiten zu bekommen, und so ist derzeit nur eine Variable in file_1.py erklärt versucht, zu verwenden, und drucken Sie es aus, wenn test_file1.py ausgeführt wird.

file1.py enthält:

file1_variable = "Hello" 

test_file1.py enthält:

import sys 
import os 
sys.path.append(os.path.abspath('../Title')) 
import file1 

def test_something(): 
    assert file1.file1_variable == "Hello" 

print(file1.file1_variable) 

Die Import-Anweisung aus meiner Testdatei aus https://stackoverflow.com/a/10272919/5477580 genommen wird, die durch die Bearbeitung der PYTHONPATH Variable funktioniert. Dies ermöglicht es mir, das test_file1.py-Skript auszuführen und die print-Anweisung erfolgreich auszuführen.

jedoch versucht py.test vom /ProjectName Verzeichnis zu laufen gibt mir eine Fehlermeldung, ImportError: No module named 'file1'

Gibt es irgendeine Art und Weise, in der ich bessere Dinge strukturieren kann, so dass pytest möglich sein wird? Muss ich etwas zu meiner __init__.py Datei hinzufügen?

Antwort

2

Nein, Sie müssen nichts zu __init__.py hinzufügen. Diese Datei weist python an, das übergeordnete Verzeichnis als Modul zu behandeln, das als described here importiert werden kann. Fügen Sie einfach es zu Ihrem Titel-Verzeichnis und importieren Sie es wie

from ..Tiltle.file import file1_variable 

wir hier oben wie cd .. im Verzeichnis 1 Hierarchie bewegen

Hinweis .. für das Erreichen des Pakets Titel ist von Test Verzeichnis. Wenn Sie Ihre Datei aus Project Verzeichnis laufen Sie

from Tiltle.file import file1_variable 
+0

zu tun haben, die funktioniert, ich danke Ihnen sehr. Ich glaube, ich habe nur die Struktur von hierarchischen Importanweisungen falsch interpretiert. Es scheint jedoch, dass mein Pytest erneut Fehler verursacht, wenn in Datei1.py Importanweisungen vorhanden sind. Angenommen, file1.py importiert eine Funktion aus file2.py. Wenn pytest ausgeführt wird, wird dann angegeben, dass kein Modul namens file2.py vorhanden ist. Muss ich diese in der Testdatei explizit deklarieren? – Shinkawa91

Verwandte Themen