Heim > Backend-Entwicklung > Python-Tutorial > Wie behebe ich „ImportError: Kein Modul benannt…'-Fehler in Pytest?

Wie behebe ich „ImportError: Kein Modul benannt…'-Fehler in Pytest?

Susan Sarandon
Freigeben: 2024-12-04 13:29:11
Original
831 Leute haben es durchsucht

How Do I Fix

Behebung des ImportError: No Module Named-Problems mit Pytest

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
Nach dem Login kopieren

Um dieses Problem zu beheben, werden die folgenden Ansätze empfohlen:

1. Verwendung der „Pythonpath“-Konfiguration (Pytest >= 7)

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 = .
Nach dem Login kopieren

Indem Sie die Pfadeinträge relativ zum Stammverzeichnis angeben, fügen Sie dieses Verzeichnis effektiv zu sys.path hinzu. Behebung der Importprobleme.

2. Implementierung der „conftest“-Lösung (Pytest < 7)

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
Nach dem Login kopieren

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.

Erklärung:

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.

Fazit:

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage