pytest kann kein Modul importieren, während Python dies kann

109

Ich arbeite an einem Paket in Python. Ich benutze virtualenv. Ich habe den Pfad zum Stammverzeichnis des Moduls in einem .pth-Pfad in meiner virtuellen Umgebung festgelegt, damit ich während der Entwicklung des Codes Module des Pakets importieren und Tests durchführen kann (Frage 1: Ist dies eine gute Möglichkeit?). Dies funktioniert gut (hier ist ein Beispiel, dies ist das Verhalten, das ich möchte):

(VEnvTestRc) zz@zz:~/Desktop/GitFolders/rc$ python
Python 2.7.12 (default, Jul  1 2016, 15:12:24) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from rc import ns
>>> exit()
(VEnvTestRc) zz@zz:~/Desktop/GitFolders/rc$ python tests/test_ns.py 
issued command: echo hello
command output: hello

Wenn ich jedoch versuche, PyTest zu verwenden, werden einige Importfehlermeldungen angezeigt:

(VEnvTestRc) zz@zz:~/Desktop/GitFolders/rc$ pytest
=========================================== test session starts ============================================
platform linux2 -- Python 2.7.12, pytest-3.0.5, py-1.4.31, pluggy-0.4.0
rootdir: /home/zz/Desktop/GitFolders/rc, inifile: 
collected 0 items / 1 errors 

================================================== ERRORS ==================================================
________________________________ ERROR collecting tests/test_ns.py ________________________________
ImportError while importing test module '/home/zz/Desktop/GitFolders/rc/tests/test_ns.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
tests/test_ns.py:2: in <module>
    from rc import ns
E   ImportError: cannot import name ns
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
========================================= 1 error in 0.09 seconds ==========================================
(VEnvTestRc) zz@zz:~/Desktop/GitFolders/rc$ which pytest
/home/zz/Desktop/VirtualEnvs/VEnvTestRc/bin/pytest

Ich bin ein bisschen verwirrt, es sieht so aus, als würde dies auf einen Importfehler hinweisen, aber Python macht es gut. Warum gibt es speziell bei PyTest ein Problem? Irgendein Vorschlag zum Grund / zur Abhilfe (Frage 2)? Ich habe den Fehler 'ImportError: Kann nicht importieren' für PyTest gegoogelt und gestapelt, aber die Treffer, die ich erhalten habe, standen im Zusammenhang mit dem fehlenden Python-Pfad und der Behebung dieses Problems, was hier nicht das Problem zu sein scheint. Irgendwelche Vorschläge?

Zorglub29
quelle

Antworten:

114

Die Antwort gefunden:

__init__.pyLegen Sie KEINE Datei in einen Ordner mit TESTS, wenn Sie pytest verwenden möchten. Ich hatte eine solche Datei, das Löschen löste das Problem.

Dies wurde tatsächlich in den Kommentaren zur zweiten Antwort des PATH-Problems mit dem Pytest 'ImportError: Kein Modul namens YadaYadaYada' begraben, also habe ich es nicht gesehen, hoffe, es wird hier sichtbarer.

Zorglub29
quelle
44
Komisch. Ich hatte das gleiche Problem und musste init .py zu meinem Testordner hinzufügen .
Ev.
5
Ja, dies ist keine allgemeine Lösung (obwohl dies in Ihrem Fall der Fall war), um zu verstehen, warum dies gelesen werden sollte: docs.pytest.org/en/latest/goodpractices.html#test-package-name
juan
1
Diese Informationen sind falsch und irreführend! Nach dem Hinzufügen von init .py zum Testordner funktionierte alles einwandfrei
Leonardo Ostan
@LeonardoOstan Es mag für Sie falsch sein, aber das bedeutet nicht, dass diese Informationen im Allgemeinen falsch sind. In meinem Fall hat es das Problem gelöst.
Desprit
76

Ich kann nicht sagen, dass ich verstehe, warum das funktioniert, aber ich hatte das gleiche Problem und die Tests funktionieren gut, wenn ich laufe python -m pytest.

Ich bin in einer virtuellen Umgebung, mit Pytest auch weltweit verfügbar:

(proj)tom@neon ~/dev/proj$ type -a python
python is /home/tom/.virtualenvs/proj/bin/python
python is /usr/bin/python

(proj)tom@neon ~/dev/proj$ python -V
Python 3.5.2

(proj)tom@neon ~/dev/proj$ type -a pytest
pytest is /home/tom/.virtualenvs/proj/bin/pytest
pytest is /usr/bin/pytest

(proj)tom@neon ~/dev/proj$ pytest --version
This is pytest version 3.5.0, imported from /home/tom/.virtualenvs/proj/lib/python3.5/site-packages/pytest.py
Tom
quelle
1
Hat auch den Job für mich gemacht, die Sache ist, es wird von der Python-Version ausgeführt, die anstelle Ihrer v.env definiert ist.
Nebulosar
11
Ein Grund könnte sein, dass python -m pytest [...]"auch das aktuelle Verzeichnis hinzugefügt wird sys.path".
Minus vom
Hatte das gleiche in Windows 10 und das Ausführen von Python-m Pytest löste es
Duccio
Dies funktionierte auch in meiner virtuellen Umgebung, die ich ausführen musstepython3 -m pytest
Rishi Raj
Basierend auf dem Kommentar von @minusf verwende ich PYTHONPATH=.:./src pytestals Make-Ziel.
Jan Groth
29

Ich habe dies gerade gelöst, indem ich die Datei __init__.py in meinem Projektstamm entfernt habe:

.
├── __init__.py <--- removed
├── models
   ├── __init__.py
   ├── address.py
   ├── appointment.py
   └── client.py
├── requirements.txt
├── setup.cfg
├── tests
   ├── __init__.py
   ├── models
      ├── __init__.py
      ├── appointment_test.py
      └── client_test.py
   └── other_test.py
└── script.py
Aaron McMillin
quelle
4
Die akzeptierte Antwort __init__.py file in a folder containing TESTShat mein Problem nicht gelöst. Dieser hat funktioniert. Ich denke, das liegt an der Dateihierarchie.
Smido
Ich habe die __init__.pyDatei entfernt . Ich hatte immer noch Probleme. Das Hinzufügen der Datei conftest.py zum Stammverzeichnis hat bei mir funktioniert.
Vijay Sali
Ich würde erwarten, dass conftest.py in / tests nicht die Wurzel ist
Aaron McMillin
Das Abrufen der Datei conftest.py in das Stammverzeichnis hat dies ebenfalls für mich behoben. Sie haben keine init .py-Datei im Testverzeichnis
Update
2
Diese Lösung hat bei mir funktioniert, aber weiß jemand, dass dies einen Importfehler verursachen würde?
Aldo Okware
19

Ich hatte das gleiche Problem, aber aus einem anderen Grund als den genannten:

Ich hatte py.test global installiert, während die Pakete in einer virtuellen Umgebung installiert wurden.

Die Lösung bestand darin, pytestin der virtuellen Umgebung zu installieren . (Wenn Ihre Shell wie Bash ausführbare Dateien hascht, verwenden Sie hash -roder verwenden Sie den vollständigen Pfad zu py.test)

Kennzeichen
quelle
2
Ich habe gerade festgestellt, dass ich mit Anaconda das gleiche hinterhältige Problem hatte. Ich habe vergessen, pytestdie von erstellte virtuelle Umgebung hinzuzufügen conda, pytestsie ist jedoch in der Root-Umgebung von anaconda verfügbar. Daher konnte pytest gefunden werden, jedoch kein in der Umgebung installiertes Paket.
Overdrivr
1
Ich hatte das gleiche Problem. pytest wurde global und nicht in der virtuellen Umgebung installiert. pip3 install pytestInnerhalb von virtualenv wurde das Problem behoben.
Ankit Singh
7

Dieses Problem tritt auf, wenn Sie eine tests.pyDatei und einen Testordner mit haben tests/__init__.py.

Während der Sammlung findet pytest den Ordner, aber wenn versucht wird, die Testdateien aus dem Ordner zu importieren, tests.pyverursacht die Datei das Importproblem.

Um dies zu beheben, entfernen Sie einfach die tests.pyDatei und legen Sie alle Ihre Tests in den tests/Ordner.

Für Ihren speziellen Fall ist die Lösung genau:

  • Entfernen Sie die Datei /home/zz/Desktop/GitFolders/rc/tests.py
  • Stellen Sie sicher, dass /home/zz/Desktop/GitFolders/rc/tests/__init__.pyvorhanden ist
lucasamaral
quelle
4

Ich hatte ein ähnliches Problem, genau den gleichen Fehler, aber eine andere Ursache. Ich habe den Testcode einwandfrei ausgeführt, aber gegen eine alte Version des Moduls. In der vorherigen Version meines Codes existierte eine Klasse, die andere nicht. Nach dem Aktualisieren meines Codes hätte ich Folgendes ausführen müssen, um ihn zu installieren.

sudo pip install ./ --upgrade

Bei der Installation des aktualisierten Moduls führte pytest zu den richtigen Ergebnissen (da ich die richtige Codebasis verwendete).

rustysys-dev
quelle
1
Das hat bei mir funktioniert! Mein Modul wurde gleichzeitig als Bibliothek in dem Docker-Container installiert, mit dem ich pytest ausgeführt habe. Wenn der Python-Interpreter ausgeführt wird, wird der aktualisierte Code gefunden, aber pytest findet den Code weiterhin so, wie er war, als die Bibliothek zum ersten Mal installiert wurde. Durch Ausführen wurde pip install ./ --upgradedie installierte Version der Bibliothek mit dem neuesten Code aktualisiert und pytest aktiviert, um auch diese neueste Version zu finden.
FaustoW
4

In meinem Fall ist der Importfehler aufgetreten, weil das Paket auf ein anderes Paket / Verzeichnis mit demselben Namen verweist und sein Pfad eine Ebene über dem Ordner liegt, den ich eigentlich wollte. Ich denke, dies erklärt auch, warum einige Leute _ init _.py entfernen müssen, während andere wieder hinzufügen müssen.

Ich habe nur print(the_root_package.__path__)(nach import the_root_package) sowohl in die pythonKonsole als auch in die pytestSkripte eingefügt, um den Unterschied zu vergleichen

BOTTOM LINE: Wenn Sie dies tun python, unterscheidet sich das von Ihnen importierte Paket möglicherweise von dem Paket, das Sie ausführen pytest.

JoeyZhao
quelle
3

Installieren Sie die Pakete in Ihrer virtuellen Umgebung.
Starten Sie dann eine neue Shell und geben Sie Ihre virtuelle Umgebung erneut ein.

Kjeld Flarup
quelle
1
Das war mein Problem: eine Neuinstallation ohne Nachladen des venv
eingefrorenen
2

Die obige Antwort funktioniert bei mir nicht. Ich habe es gerade gelöst, indem ich den absoluten Pfad des Moduls angehängt habe, der nicht sys.pathoben auf dem test_xxx.py(Ihrem Testmodul) gefunden wurde, wie:

import sys
sys.path.append('path')
ZYX
quelle
1
Anstatt diese Zeilen oben in mein zu setzen test_main.py, habe ich sie conftest.pyin mein Testverzeichnis gestellt und es hat funktioniert. Vielen Dank für die Bereitstellung einer programmatischen Lösung anstelle von Dateimüll.
Cameron Hudson
2

Wenn es sich um Python-Code handelt, der ursprünglich in Python 2.7 entwickelt und jetzt in Python 3.x migriert wurde, liegt das Problem wahrscheinlich an einem Importproblem.

Beispiel: Wenn Sie ein Objekt aus einer Datei importieren base, die sich im selben Verzeichnis befindet, funktioniert dies in Python 2.x:

from base import MyClass

In Python 3.x sollten Sie den basePfad durch den vollständigen Pfad ersetzen. .base Andernfalls wird das oben genannte Problem verursacht. also versuche:

from .base import MyClass
Amit Talmor
quelle
2

Ich habe dieses Problem heute festgestellt und es gelöst, indem ich python -m pytestaus dem Stammverzeichnis meines Projektverzeichnisses aufgerufen habe.

Das Anrufen pytestvom selben Standort aus verursachte immer noch Probleme.

Mein Projektverzeichnis ist wie folgt organisiert:

api/
 - server/
  - tests/
      - test_routes.py
  - routes/
      - routes.py
 - app.py

Das Modul routeswurde in mein importiert test_routes.pyals:from server.routes.routes import Routes

Hoffentlich hilft das!

matt6frey
quelle
Vielen Dank für die Erinnerung, ich musste den Trick in der Vergangenheit anwenden und er steht in der Pytest-Dokumentation.
Jason R Stevens CFA
1

Ein weiterer Sonderfall:

Ich hatte das Problem mit Tox. Mein Programm lief also gut, aber Unittests über Tox beschwerten sich immer wieder. Nach der Installation der Pakete (für das Programm erforderlich) müssen Sie zusätzlich die Pakete angeben, die in den Unittests in der tox.ini verwendet werden

[testenv]
deps =
    package1
    package2 
...
martin.zaenker
quelle
1

Hatte ein ähnliches Problem und es funktionierte, als ich die Datei init .py im Testverzeichnis hinzufügte .

Chetan G. Bendre
quelle
1

Ich habe das mit VSCode bekommen. Ich habe eine Conda-Umgebung. Ich glaube nicht, dass die VScode-Python-Erweiterung die von mir vorgenommenen Aktualisierungen sehen kann.

python c:\Users\brig\.vscode\extensions\ms-python.python-2019.9.34911\pythonFiles\testing_tools\run_adapter.py discover pytest -- -s --cache-clear test
Test Discovery failed:

Ich musste rennen pip install ./ --upgrade

Brigg
quelle
Dieser Pip-Befehl gibt einen Fehler zurück:Directory './' is not installable. Neither 'setup.py' nor 'pyproject.toml' found.
Derek
1

Bearbeiten Sie Ihre Datei conftest.py und fügen Sie folgende Codezeilen hinzu:

import os, sys
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(file), '..')))

Wenn Sie versuchen, den Testfall über das Terminal auszuführen, verwenden Sie Folgendes Beispiel:

python -m pytest test_some_step_file_steps.py --html=HTML_step_file_output.html --self-contained-html
Siddharth Singh
quelle
NameError: name 'file' is not defined- Womit sollte die Datei gleich sein?
Koshmaar
1

Ein weiterer großer Gewinn für Pythons Importsystem. Ich denke, der Grund, warum es keinen Konsens gibt, ist, dass das, was funktioniert, wahrscheinlich von Ihrer Umgebung und den Tools abhängt, die Sie darüber hinaus verwenden.

Ich verwende dies von VS Code im Test-Explorer unter Windows in einer Conda-Umgebung, Python 3.8.

Das Setup, an dem ich arbeiten muss, ist:

mypkg/
    __init__.py
    app.py
    view.py
tests/
    test_app.py
    test_view.py

Unter diesem Setup funktioniert Intellisense und die Testerkennung.

Beachten Sie, dass ich ursprünglich Folgendes versucht habe, wie hier empfohlen .

src/
    mypkg/
        __init__.py
        app.py
        view.py
tests/
    test_app.py
    test_view.py

Ich konnte keine Möglichkeit finden, dies mit VS Code zum srcLaufen zu bringen, da der Ordner das Importsystem einfach umgehauen hat. Ich kann mir vorstellen, dass es eine Möglichkeit gibt, dies über die Befehlszeile zum Laufen zu bringen. Als relativ neue Konvertierung in die Python-Programmierung habe ich das nostalgische Gefühl, mit COM zu arbeiten, aber etwas weniger Spaß zu haben.

Satnhak
quelle
1

Habe alles gleich gehalten und gerade eine leere Testdatei im Stammordner hinzugefügt. Es wurde behoben

Hier sind die Ergebnisse, dieses Problem hat mich eine Weile wirklich nervt. Meine Ordnerstruktur war

mathapp/
    - server.py  
    - configuration.py 
    - __init__.py 
    - static/ 
       - home.html  
tests/            
    - functional 
       - test_errors.py 
    - unit  
       - test_add.py

und pytest würde sich beim ModuleNotFoundError beschweren und den Hinweis geben - stellen Sie sicher, dass Ihre Testmodule / -pakete gültige Python-Namen haben.

Ich habe eine Mock-Testdatei auf der gleichen Ebene wie Mathsapp und das Testverzeichnis eingeführt. Die Datei enthielt nichts. Jetzt beschwert sich pytest nicht.

Ergebnis ohne die Datei

$ pytest
============================= test session starts =============================
platform win32 -- Python 3.8.2, pytest-5.4.2, py-1.8.1, pluggy-0.13.1
rootdir: C:\mak2006\workspace\0github\python-rest-app-cont
collected 1 item / 1 error

=================================== ERRORS ====================================
_______________ ERROR collecting tests/functional/test_func.py ________________
ImportError while importing test module 'C:\mainak\workspace\0github\python-rest-app-cont\tests\functional\test_func.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
tests\functional\test_func.py:4: in <module>
    from mathapp.service import sum
E   ModuleNotFoundError: No module named 'mathapp'
=========================== short test summary info ===========================
ERROR tests/functional/test_func.py
!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!
============================== 1 error in 0.24s ===============================

Ergebnisse mit der Datei

$ pytest
============================= test session starts =============================
platform win32 -- Python 3.8.2, pytest-5.4.2, py-1.8.1, pluggy-0.13.1
rootdir: C:\mak2006\workspace\0github\python-rest-app-cont
collected 2 items

tests\functional\test_func.py .                                          [ 50%]
tests\unit\test_unit.py .                                                [100%]

============================== 2 passed in 0.11s ==============================
Mak2006
quelle
Dies war der Trick von mir
Subrata Fouzdar
Das hat bei mir nach langer Zeit mit diesem Problem funktioniert. scheint, als würde pytest das Projektstammverzeichnis so behandeln, als ob es die erste Testdatei findet? Sicher ist das ein Fehler?
oooyaya
1

Ich habe mein Problem gelöst, indem ich die PYTHONPATHUmgebungsvariablen für die spezifische Konfiguration festgelegt habe, mit der ich meine Tests ausführe.

Während Sie die Testdatei auf PyCharm anzeigen:

  1. Ctrl+ Shift+A
  2. Art Edit Configurations
  3. Stellen Sie Ihre PYTHONPATHunter Umgebung> Umgebungsvariablen ein.
Ece Tavasli
quelle
0

Es kann sein, dass Pytest das Paket nicht als Python-Modul liest, während Python dies ist (wahrscheinlich aufgrund von Pfadproblemen). Versuchen Sie, das Verzeichnis des Pytest-Skripts zu ändern oder das Modul explizit zu Ihrem PYTHONPATH hinzuzufügen.

Oder Sie haben möglicherweise zwei Versionen von Python auf Ihrem Computer installiert. Überprüfen Sie Ihre Python-Quelle auf pytest und die von Ihnen ausgeführte Python-Shell. Wenn sie unterschiedlich sind (z. B. Python 2 vs 3), source activatestellen Sie mit sicher, dass Sie den installierten Pytest für denselben Python ausführen, in dem das Modul installiert ist.

tooty44
quelle
0

Für alle, die alles versucht haben und trotzdem Fehler bekommen, habe ich eine Lösung.

Wechseln Sie in dem Ordner, in dem pytest installiert ist, zum Ordner pytest-env .

Öffnen Sie die Datei pyvenv.cfg .

Ändern Sie in der Datei include-system-site-packages von false in true .

home = /usr/bin
include-system-site-packages = true
version = 3.6.6

Hoffe, es funktioniert. Vergessen Sie nicht, die Abstimmung zu verbessern.

Charan Reddy
quelle
0

Wenn Sie bereits .pyc-Dateien haben, versuchen Sie, diese zu löschen.

Heute stoße ich auf dieses Problem. Folgendes ist passiert:

Zuerst starte ich pytest auf einem Mac (dadurch werden pyc-Dateien generiert), dann starte ich einen Docker-Container (das Betriebssystem ist alpin) mit gemountetem Projektverzeichnis. Wenn ich dann versuche, pytest in container auszuführen, passiert ImportError. nach dem bereinigen aller pyc dateien kein fehler mehr.

Hoffe das kann hilfreich sein.

接口 夏季
quelle
0

Wenn Sie eine Notwendigkeit init .py - Datei in Ihrem Ordner erstellen Sie eine Kopie des Ordners und löschen init .py , daß man Ihre Tests ausführen es für lokale Projekte arbeitet. Wenn Sie den Test regelmäßig ausführen müssen, prüfen Sie, ob Sie Ihre init .py in eine separate Datei verschieben können.

nchil
quelle
0

[Gelöst] Bevor __init__.pywir direkt auf die Lösung zum Entfernen / Hinzufügen eingehen , möchten wir möglicherweise auch untersuchen, wie die Importe in Ihren Klassen durchgeführt wurden. Eigentlich habe ich einen Tag damit verloren, nur daran zu __init__.pydenken, dass das das Problem sein könnte :) Das war jedoch ziemlich informativ.

In meinem Fall war es die falsche Art, Klassen von einer Python-Klasse zu einer anderen Python-Klasse aufzurufen, die geworfen wurde ImportError. Die Art und Weise, wie Klassen / Module aufgerufen werden, wurde korrigiert und es funktionierte wie ein Zauber. Hoffe, das hilft auch anderen.

Und ja, für ähnliche Fehler haben wir möglicherweise unterschiedliche Lösungen, je nachdem, wie der Code geschrieben ist. Besser mehr Zeit für das Selbst-Debuggen aufwenden. Lektion gelernt :) Viel Spaß beim Codieren !!!

Nullcode
quelle
1
Können Sie einige Beispiele für den falschen und den richtigen Weg nennen?
Lurifaxel
0

Meine 2 Cent dazu: pytest schlägt zufällig fehl, wenn Sie keine virtuellen Umgebungen verwenden. Manchmal funktioniert es einfach, manchmal nicht.

Daher lautet die Lösung:

  • Entfernen Sie den Pytest mit der Deinstallation von Pip
  • Erstelle dein Venv
  • aktiviere dein venv
  • pip Installieren Sie Ihren Projektpfad im bearbeitbaren Modus, damit er von pytest als Modul behandelt wird (andernfalls findet pytest Ihre internen Importe nicht). Dazu benötigen Sie eine setup.py-Datei
  • Installieren Sie Ihre Pakete, einschließlich Pytest
  • Führen Sie schließlich Ihre Tests aus

Der Code unter Windows PowerShell:

pip uninstall pytest
python.exe -m venv my_env
.\my_env\Scripts\activate
(my_env) pip install -e .
(my_env) pip install pytest pytest-html pandas numpy

Dann endlich

(my_env) pytest --html="my_testing_report.html"

Ein Beispiel für setup.py für pip install -e:

import setuptools

setuptools.setup(
    name='my_package',
    version='devel',
    author='erickfis',
    author_email='[email protected]',
    description='My package',
    long_description='My gooood package',
    packages=setuptools.find_packages(),
    classifiers=[
        'Programming Language :: Python :: 3',
        'Operating System :: OS Independent',
    ],
    include_package_data=True
)
erickfis
quelle
0

Ich bin mit den Beiträgen nicht einverstanden, die besagen, dass Sie alle __init__.pyDateien entfernen müssen . Was Sie stattdessen tun müssen, ist das zu ändern sys.path.

Führen Sie ein Experiment aus, bei dem Sie drucken, sys.pathwenn Sie den Code normal ausführen. Drucken Sie dann, sys.pathwährend Sie den Code über pytest ausführen. Ich denke, Sie werden feststellen, dass es einen Unterschied zwischen diesen beiden Pfaden gibt, weshalb der Pytest bricht.

Um dies zu beheben, fügen Sie den Pfad aus dem ersten Experiment am 0. Index des zweiten ein.

Sei '/usr/exampleUser/Documents/foo'das erste Element von print(sys.path)für Experiment 1.

Unten finden Sie Code, mit dem Sie Ihr Problem beheben können:

import sys sys.path[0] = '/usr/exampleUser/Documents/foo'

Fügen Sie dies vor Ihrer eigentlichen Importanweisung oben in Ihre Datei ein.

Quelle: Ich habe mich selbst damit befasst und der obige Prozess hat es gelöst.

th3lourde
quelle
0

Legen Sie einfach eine leere conftest.pyDatei im Projektstammverzeichnis ab, da beim pytestErkennen einer conftest.py die Datei sys.path geändert wird, sodass Inhalte aus dem conftestModul importiert werden können. Eine allgemeine Verzeichnisstruktur kann sein:

Root
├── conftest.py
├── module1
   ├── __init__.py
   └── sample.py
└── tests
    └── test_sample.py
Abdul Rehman
quelle
-1

Ich hatte alle meine Tests in einem Testordner abgelegt und bekam den gleichen Fehler. Ich habe dieses Problem gelöst, indem ich eine init .py in diesen Ordner eingefügt habe:

. | - Pipfile | - Pipfile.lock | - README.md | - api | - app.py | - config.py | - migrations | - pull_request_template.md | - settings.py -- tests |-- __init__.py <------ |-- conftest.py - test_sample.py

Chidiebere
quelle