Wenn bei der Verwendung von Pytest der Fehler „ImportError: No Module Named...“ auftritt, ist es wichtig, dies zu berücksichtigen das potenzielle Problem der PATH-Konfiguration, insbesondere auf Linux- oder Windows-Systemen. In diesem speziellen Fall hat der Benutzer pytest mit easy_install auf einem Mac installiert und ist beim Testen eines Projekts mit der folgenden Dateistruktur auf das Problem gestoßen:
repo/ |--app.py |--settings.py |--models.py |--tests/ |--test_app.py
Um dieses Problem zu beheben, werden die folgenden Ansätze empfohlen:
Pytest hat ein Kern-Plugin eingeführt, das sys.path-Änderungen über die „Pythonpath“-Konfigurationseinstellung ermöglicht. Diese vereinfachte Lösung beinhaltet das Hinzufügen der folgenden Zeilen zur pyproject.toml- oder pytest.ini-Datei Ihres Projekts:
# pyproject.toml [tool.pytest.ini_options] pythonpath = [ "." ] # pytest.ini [pytest] pythonpath = .
Indem Sie die Pfadeinträge relativ zum Stammverzeichnis angeben, fügen Sie dieses Verzeichnis effektiv zu sys.path hinzu. Behebung der Importprobleme.
Für ältere Versionen von pytest besteht ein weniger invasiver Ansatz darin, eine leere Datei mit dem Namen „conftest.py“ im Stammverzeichnis des Projekts zu erstellen:
$ touch repo/conftest.py
Auf diese Weise fügt Pytest automatisch das übergeordnete Verzeichnis von „conftest.py“ zu sys.path hinzu und ermöglicht so eine erfolgreiche Aktivierung Importe.
Pytest sucht während der Testsammlung nach „conftest“-Modulen, um benutzerdefinierte Hooks und Fixtures zu sammeln. Um diese benutzerdefinierten Objekte zu importieren, fügt pytest das übergeordnete Verzeichnis von „conftest.py“ zu sys.path hinzu.
Der empfohlene Ansatz zur Lösung Importprobleme in Pytest hängen von der von Ihnen verwendeten Version ab. Für pytest >= 7 wird die Konfiguration „pythonpath“ bevorzugt, während für pytest < 7 bleibt die „conftest“-Lösung wirksam.
Das obige ist der detaillierte Inhalt vonWie behebe ich „ImportError: Kein Modul benannt…'-Fehler in Pytest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!