gpt4 book ai didi

python - py.test 未正确从 conftest 导入模块 - 失败并显示 ConftestImportFailure : ModuleNotFound

转载 作者:太空宇宙 更新时间:2023-11-03 10:50:01 25 4
gpt4 key购买 nike

pytest 无法导入模块,即使这些模块在 vanilla python 解释器下导入正常。特别是从 conftest 导入的模块无法解析。当 pytest 尝试重写模块中的断言信息时,会引发 ImportErrori。

回溯示例:

================================================================================================================================================ test session starts ================================================================================================================================================
platform darwin -- Python 3.6.2, pytest-3.8.1, py-1.5.4, pluggy-0.7.1 -- /yyy/venv/bin/python3.6
cachedir: .pytest_cache
rootdir: /yyy/corporategovernance, inifile: setup.cfg
plugins: timeout-1.3.1, cov-2.5.1, populus-1.9.0, flaky-3.4.0, celery-4.1.0, splinter-1.8.5+headless
collecting 0 items / 1 errors
====================================================================================================================================================== ERRORS =======================================================================================================================================================
_________________________________________________________________________________________________________________________________ ERROR collecting corporategovernance/__init__.py __________________________________________________________________________________________________________________________________
../venv/lib/python3.6/site-packages/_pytest/config/__init__.py:381: in _getconftestmodules
return self._path2confmods[path]
E KeyError: local('/xxx/tests')

During handling of the above exception, another exception occurred:
../venv/lib/python3.6/site-packages/_pytest/config/__init__.py:412: in _importconftest
return self._conftestpath2mod[conftestpath]
E KeyError: local('/xxx/tests/conftest.py')

During handling of the above exception, another exception occurred:
../venv/lib/python3.6/site-packages/_pytest/config/__init__.py:418: in _importconftest
mod = conftestpath.pyimport()
../venv/lib/python3.6/site-packages/py/_path/local.py:668: in pyimport
__import__(modname)
../venv/lib/python3.6/site-packages/_pytest/assertion/rewrite.py:290: in load_module
six.exec_(co, mod.__dict__)
corporategovernance/tests/conftest.py:4: in <module>
import corporategovernance.backend
E ModuleNotFoundError: No module named 'corporategovernance.backend'

During handling of the above exception, another exception occurred:
../venv/lib/python3.6/site-packages/_pytest/runner.py:201: in __init__
self.result = func()
../venv/lib/python3.6/site-packages/_pytest/runner.py:261: in <lambda>
call = CallInfo(lambda: list(collector.collect()), "collect")
../venv/lib/python3.6/site-packages/_pytest/python.py:624: in collect
for x in self._collectfile(path):
../venv/lib/python3.6/site-packages/_pytest/python.py:579: in _collectfile
ihook = self.gethookproxy(path)
../venv/lib/python3.6/site-packages/_pytest/python.py:568: in gethookproxy
my_conftestmodules = pm._getconftestmodules(fspath)
../venv/lib/python3.6/site-packages/_pytest/config/__init__.py:395: in _getconftestmodules
mod = self._importconftest(conftestpath)
../venv/lib/python3.6/site-packages/_pytest/config/__init__.py:431: in _importconftest
raise ConftestImportFailure(conftestpath, sys.exc_info())
E _pytest.config.ConftestImportFailure: ModuleNotFoundError("No module named 'corporategovernance.backend'",)
E File "/yyy/venv/lib/python3.6/site-packages/_pytest/assertion/rewrite.py", line 290, in load_module
E six.exec_(co, mod.__dict__)
E File "/xxx/tests/conftest.py", line 4, in <module>
E import corporategovernance.backend
===Flaky Test Report===

如何解决?

最佳答案

如果您的 tests 文件夹和子文件夹下有 __init__.py 文件,那么 pytest 可能会很挑剔。这可能会导致 pytest 在某些情况下以错误的顺序解析 Python 模块。

解决方法是删除所有测试中的 __init__.py 文件。

关于python - py.test 未正确从 conftest 导入模块 - 失败并显示 ConftestImportFailure : ModuleNotFound,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52589912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com