PATH-Probleme für Pytest mit Modulimportfehlern lösen
Wenn Sie Pytest zum Ausführen von Tests für ein Projekt mit einer hierarchischen Dateistruktur verwenden, können Sie dies tun Beim Importieren von Modulen aus dem Pfad Ihrer Anwendung treten Fehler vom Typ „ImportError: Kein Modul namens ...“ auf. Dieses Problem ergibt sich aus der Notwendigkeit, den sys.path zu ändern, um die Pfade zu den erforderlichen Modulen einzuschließen.
Empfohlener Ansatz für pytest >= 7: pythonpath Setting
Pytest-Versionen ab 7 bieten eine vereinfachte Lösung unter Verwendung des Pythonpath-Konfigurationswerts. Dadurch können Sie bestimmte Pfade zu sys.path hinzufügen, ohne dass Workarounds erforderlich sind. In Ihrer Konfigurationsdatei (pyproject.toml oder pytest.ini) können Sie die Pfade angeben, die Sie einschließen möchten, wie zum Beispiel:
[tool.pytest.ini_options] pythonpath = [ "." ]
[pytest] pythonpath = .
Originalantwort für pytest < 7: conftest-Lösung
Wenn Sie eine ältere Version von pytest (weniger als 7) verwenden, können Sie die leere conftest.py-Lösung verwenden. Dazu muss eine leere Datei conftest.py im Stammverzeichnis des Projekts erstellt werden. Dadurch wird pytest veranlasst, das übergeordnete Verzeichnis der Datei conftest.py automatisch zu sys.path hinzuzufügen, wodurch die Importprobleme behoben werden.
Erklärung
Pytest sucht währenddessen nach conftest-Modulen Testsammlung, um kundenspezifische Haken und Vorrichtungen zu sammeln. Um benutzerdefinierte Objekte aus diesen Modulen zu importieren, fügt pytest das übergeordnete Verzeichnis von conftest.py zu sys.path hinzu.
Alternative Lösungen
Es gibt je nach Bedarf zusätzliche Lösungen für dieses Problem auf Ihrer Projektstruktur:
Fazit
Durch Anpassen von sys.path oder Verwenden der conftest.py-Lösung können Sie das Problem beheben „ImportError: Kein Modul namens ...“-Fehler und stellen Sie eine erfolgreiche Testausführung in Ihrer Pytest-Umgebung sicher.
Das obige ist der detaillierte Inhalt vonWie kann ich den Fehler „ImportError: No Module Named…' beheben, wenn ich pytest mit einer hierarchischen Projektstruktur verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!