1

我正在将一个非常大的多包、多应用程序 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。

4

2 回答 2

1

为了让它工作,您要么需要开发安装工作树,要么添加 . 到 PYTHONPATH 环境变量

于 2013-09-18T20:55:22.433 回答
-1

更改到您的主要 python 网站模块所在的文件夹

django-admin runserver --settings=mysite.settings

mysite是由哪里创建的

django-admin startproject mysite
于 2014-01-25T01:13:55.180 回答