Django 为什么我的单元测试只在我的应用程序上运行,而不是在我的整个项目上运行?
我刚刚开始为django项目编写第一个单元测试,但在尝试运行所有项目测试时遇到了一个问题 如果我为特定模块/应用程序运行测试,它可以正常工作:Django 为什么我的单元测试只在我的应用程序上运行,而不是在我的整个项目上运行?,django,unit-testing,python-2.7,Django,Unit Testing,Python 2.7,我刚刚开始为django项目编写第一个单元测试,但在尝试运行所有项目测试时遇到了一个问题 如果我为特定模块/应用程序运行测试,它可以正常工作: ./manage.py test my_project.api --settings=my_project.settings.test 但当我尝试运行项目中的所有测试时: ./manage.py test my_project --settings=my_project.settings.test 我发现的每个tests.py都有一个错误: ====
./manage.py test my_project.api --settings=my_project.settings.test
但当我尝试运行项目中的所有测试时:
./manage.py test my_project --settings=my_project.settings.test
我发现的每个tests.py都有一个错误:
======================================================================
ERROR: my_project.api.tests.tests (unittest.loader.ModuleImportFailure)
----------------------------------------------------------------------
ImportError: Failed to import test module: my_project.api.tests.tests
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/loader.py", line 252, in _find_tests
module = self._get_module_from_name(name)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/loader.py", line 230, in _get_module_from_name
__import__(name)
ImportError: No module named my_project.api.tests.tests
我将VirtualVWrapper与以下内容一起使用
python 2.7.1
django 1.6.1
有人知道为什么会这样吗
编辑
这是我的项目结构的简略视图:
my_project_root
|
|
|--- my_project
| |
| |--- api
| | |
| | ---- tests
| | |
| | --- tests.py
| |--- core
| | |
| | ---- tests
| | |
| | --- tests.py
| --- settings
| |
| ---- test.py
|
|
--- manage.py
阅读django文档
测试发现基于unittest模块的内置测试发现。默认情况下,这将在当前工作目录下名为“Test*.py”的任何文件中发现测试
这是/my_project_root/这个问题在评论中(部分)解决了,它是环境配置错误和测试发现工作方式的组合
简单地说,\uuuuu init\uuuuu.py
不应该出现在我的项目根目录中
为了使heroku能够发现wsgi.py
,应该调整$PYTHONPATH
环境变量以包括my\u project\u root
此外,您可以指定
heroku config:set WSGI_PATH=path/to/my/file/wsgi.py
你同意换成吗?-这将有助于克服您的测试发现问题。看起来您有一个PYTHONPATH
(或通用路径)设置问题。大概,manage.py
位于myu项目
目录中。尝试向您的PYTHONPATH
@alecxe添加一个目录。我确实查看了nose,但django 1.6不包括django discover runner吗?它们是同一问题的解决方案吗?@Evert我明白你的意思,如果我只使用./manage.py api-settings=my_project.settings.test,那么运行每个模块和单独的测试就可以了。我使用VirtualNVRappers add2virtualenv添加到PYTHONPATH的想法正确吗?如果是这样的话,我试过了,但没有成功?在我的项目下的每个目录中都有\uu init\uuuuuuuuuuuupy
吗?