我正在为我的Django应用程序设置一个目录结构来分隔功能和单元测试。我正在使用nose作为我的Django项目的测试运行器。
在Django项目的根目录下,我有一个名为“tests”的文件夹,它具有以下结构:
tests
├── __init__.py
├── functional
│ ├── __init__.py
└── unit
├── __init__.py
├── data.py
├── tests.py
如果我只想运行单元测试,我是否应该无法使用项目根目录中的以下内容:
$ nosetests tests.unit
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
如您所见,这在tests.py文件中找不到测试。
但是,当我使用目录结构运行时,会发现测试应该是:
$ nosetests tests/unit/
E
# .. Some errors I expected because settings are not initialized when called this way
-----------------
Ran 1 test in 0.001s
FAILED (errors=1)
我错过了什么?我的主要问题是我在setup
中有一个tests.unit.__init__.py
函数,应该调用它来在测试数据库中为即将进行的测试创建数据。
由于
答案 0 :(得分:3)
这完全取决于tests/unit/__init__.py
当你说
时nosetests tests.unit
您指向的是unit/__init__.py
而不是目录unit/
,因此如果您的__init__.py
模块中没有测试,那么就不会运行任何内容。因此,当您说使用目录路径然后测试开始工作时,这是可以理解的。
你提到
我错过了什么?我的主要问题是我有一个设置功能 应该调用的tests.unit。 init .py用于创建数据 即将进行的测试的测试数据库。
虽然__init__.py
中有设置功能,但您可能还没有将测试功能导入__init__.py
对此的一个快速解决方法是在__init__.py
from tests.unit.tests import *
那说在__init__.py
中放任何代码真的不是很明智,如果你有代码返回某种配置数据我会建议创建一个新的库模块,其中包含将返回配置的函数测试数据