使用Tox运行Pytest时遇ImportError:无法找到测试模块
问题解决方法
你的问题出在tox创建的虚拟环境中未正确安装项目包,也未将项目根目录加入Python的搜索路径,导致pytest无法找到相关模块。以下是两种可行的修复方案:
方案一:使用tox-poetry-installer插件管理依赖
这个方案能让tox直接复用Poetry的依赖配置,确保测试环境与本地开发环境一致:
- 先安装tox-poetry-installer插件:
pip install tox-poetry-installer
- 修改
tox.ini的配置:
[tox] env_list = format py312 requires = tox-poetry-installer>=0.10.0 # 指定依赖插件版本 [testenv:format] description = install black in a virtual environment and invoke it on the current folder deps = black==22.3.0 skip_install = true commands = black . [testenv:py312] # 通过Poetry安装项目及所有开发依赖 install_command = poetry install --no-root {packages} commands = pytest tests
方案二:以可编辑模式安装项目包
这个方案会将你的项目以可编辑模式安装到tox虚拟环境中,让Python能找到my_package模块:
修改tox.ini中[testenv:py312]部分:
[testenv:py312] usedevelop = true # 等价于执行`pip install -e .`,将项目加入虚拟环境的搜索路径 deps = pytest commands = pytest tests
额外检查
如果你的测试文件test_my_package.py中有类似from tests import ...的导入语句,确保项目根目录在Python的sys.path中(上述两种方案都能实现这一点);如果只是导入my_package的内容,那么安装项目包后即可解决问题。
内容的提问来源于stack exchange,提问作者frimann
相关产品推荐
相关产品推荐

