Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 为什么我的单元测试只在我的应用程序上运行,而不是在我的整个项目上运行?_Django_Unit Testing_Python 2.7 - Fatal编程技术网

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都有一个错误: ====

我刚刚开始为django项目编写第一个单元测试,但在尝试运行所有项目测试时遇到了一个问题

如果我为特定模块/应用程序运行测试,它可以正常工作:

./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
吗?