Ошибка "Pytest": не удалось загрузить path/to/conftest.py"
я получаю следующую ошибку, когда я пытаюсь запустить 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
моя структура РЕПО
lib/
-tests/
-test_file.py
app/
-test_settings.py
pytest.ini
conftest.py
...
другие люди запустили этот код нормально, и в соответствии с этот вопрос (и этот), моя структура хороша, и я не пропускаю никаких файлов. Я могу только заключить, что что-то о моем компьютере или настройке проекта не так. Если у вас есть какие-либо предложения или идеи, которые я могу пропустить, отправьте им мои путь!
-------------------------------ПОДРОБНЕЕ------------------------------
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
2 ответов
У меня есть docker, а также работает pytest вне docker тоже, и для меня гораздо более низкое влияние исправить всякий раз, когда это появляется, чтобы удалить все скомпилированные файлы python
find . -name \*.pyc -delete
я понял это, и я отвечу, если у других будет такая же проблема:
Я даже не принял во внимание, что у меня был контейнер docker (того же приложения) в каталоге repo, и, хотя я не запускал контейнер docker, он каким-то образом влиял на пути к файлам.
исправить это:
- я повторно клонировал РЕПО из удаленного источника в новую папку, чтобы ничто из старого РЕПО не могло " загрязнить" он.
- обновил мою виртуальную среду с помощью .YML спецификации чистого РЕПО
$ conda env update --name project --file project.yml
- мой проект использует базу данных postgres, поэтому я отбросил ее и создал новую
$ dropdb projectdb $ createdb projectdb
- поскольку мой проект использует mongo, я также сбросил эту базу данных
$ mongo projectdb --eval "db.dropDatabase()"
- установлен чистый
pytest
$ pip uninstall pytest $ pip install pytest
...и вуаля! Я могу запустить pytest.
много спасибо @хефлинг и другим, кто помог мне отладить.