J'obtiens l'erreur suivante lorsque j'essaie d'exécuter pytest repo/tests/test_file.py
:
$ pytest repo/tests/test_file.py
Traceback (most recent call last):
File "/Users/marlo/anaconda3/envs/venv/lib/python3.6/site-packages/_pytest/config.py", line 329, in _getconftestmodules
return self._path2confmods[path]
KeyError: local('/Users/marlo/repo/tests/test_file.py')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/marlo/anaconda3/envs/venv/lib/python3.6/site-packages/_pytest/config.py", line 329, in _getconftestmodules
return self._path2confmods[path]
KeyError: local('/Users/marlo/repo/tests')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/marlo/anaconda3/envs/venv/lib/python3.6/site-packages/_pytest/config.py", line 362, in _importconftest
return self._conftestpath2mod[conftestpath]
KeyError: local('/Users/marlo/repo/conftest.py')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/marlo/anaconda3/envs/venv/lib/python3.6/site-packages/_pytest/config.py", line 368, in _importconftest
mod = conftestpath.pyimport()
File "/Users/marlo/anaconda3/envs/venv/lib/python3.6/site-packages/py/_path/local.py", line 686, in pyimport
raise self.ImportMismatchError(modname, modfile, self)
py._path.local.LocalPath.ImportMismatchError: ('conftest', '/home/venvuser/venv/conftest.py', local('/Users/marlo/repo/conftest.py'))
ERROR: could not load /Users/marlo/repo/conftest.py
Ma structure de repo est
lib/
-tests/
-test_file.py
app/
-test_settings.py
pytest.ini
conftest.py
...
D'autres personnes ont bien exécuté ce code, et selon cette question (et celle-ci ), ma structure est bonne et je ne manque aucun fichier. Je peux seulement conclure que quelque chose sur mon ordinateur ou la configuration de mon projet n'est pas correct. Si vous avez des suggestions ou des idées qui pourraient me manquer, veuillez les envoyer à ma façon!
-------------------------------PLUS DE DÉTAILS----------------- -------------
test_file.py :
def func(x):
return x + 1
def test_answer():
assert func(3) == 5
pytest.ini :
[pytest]
Django_SETTINGS_MODULE = app.test_settings
python_files = tests.py test_* *_tests.py *test.py
J'ai également docker et j'exécute pytest en dehors de docker, et pour moi, une solution à faible impact chaque fois que cela se produit consiste à supprimer tous les fichiers compilés python
find . -name \*.pyc -delete
Je l'ai compris et je répondrai au cas où d'autres auraient le même problème:
Je n'ai même pas pris en considération le fait que j'avais un conteneur docker (de la même application) dans le répertoire repo et, même si je n'exécutais pas le conteneur docker, cela influençait les chemins de fichiers d'une manière ou d'une autre.
Pour résoudre ce problème:
$ conda env update --name project --file project.yml
$ dropdb projectdb $ createdb projectdb
$ mongo projectdb --eval "db.dropDatabase ()"
pytest
propre$ pip désinstaller pytest $ pip installer pytest
... et voilà! Je pourrais exécuter pytest.
Un grand merci à @hoefling et à d'autres qui m'ont aidé à déboguer.