我正在将一个非常大的多包、多应用程序 Django (1.4.5) 项目从使用 Django 的本机测试运行程序切换到 py.test (2.3.5)。在创建 setup.cfg(管理 py.test 选项)和 conftest.py(忽略 setup.py)后,发现并运行了最低级别包 web 框架的测试,没有错误。在任何更高级别的包上运行 py.test(带有 setup.cfg 和 conftest.py)时,都需要 web 框架,我收到以下错误:
ERROR: Could not import settings 'high_level_package.test_settings' (Is it on sys.path?): No module named web_framework.settings
我正在使用虚拟环境,web-framework 位于以下位置的 venv 中:ENV/lib/python2.7/site-packages/
我尝试使用包根目录中构建的 venv 并将其构建在项目路径之外,但无济于事。此外,我可以从更高级别包根目录中的 Python 交互式命令行导入 web_framework.settings。
我当前的 conftest.py 只是以下行: collect_ignore = ["setup.py"] 我尝试在其上方添加以下行:
import os
import sys
sys.path.append(os.path.dirname(__file__))
我还尝试在上述 sys.path.append 中的 web-framework 包的路径中进行硬编码。
都没有奏效。
如果它是相关的,我的 setup.cfg 是:
[pytest]
python_files = *test*.py
norecursedirs = node_modules ENV
addopts = --junitxml=python_result.xml, --doctest-modules
编辑:忘记提及回溯关系。Higher_level_package.test_settings 导入higher_level_package.settings,它本身导入web_framework.settings。