组织Djangounit testing
现在我有我的Djangounit testing生活在mcif/tests.py
。 我宁愿有更像mcif/tests/foo_test.py
, mcif/tests/bar_test.py
等等的东西,但是如果我按照这种方式组织我的testing,Django就会翻转。
有没有办法做我想做的事情,或者我必须在一个文件中有我所有的testing?
从Django 1.6版本开始,testing发现机制发生了变化。 您不再需要从tests/__init__.py
导入所有内容,但是现在您必须确保所有包含testing的文件都与模式test*.py
匹配。
因此,现在应该有app/tests/test_models.py
和app/tests/test_views.py
,而不是app/tests/models.py
和app/tests/views.py
。
您也可以创build一个名为app/tests/test.py
文件,并从其中包含您的其他文件。 事情是,跑步者将寻找匹配模式test*.py
并执行它们。
注意:这描述了Django 1.6之前的行为。 请参阅Artur Soler对Django 1.6及更高版本的回答 。
打包: myapp/tests/
在软件包中,根据需要放置许多不同的testing模块。 在tests
的__init__.py
中,从这些模块导入testing。 (或在这个主题上的一些变化。)
编辑:哇,没有注意到你已经提到了一个tests
包。
重要的是要从包装中获得一切。 Django将从包中获取testing,所以它们必须在__init__.py
可见。
[编辑:添加有关Django 1.6版的注释]
在你的__init__.py中join如下内容:
from foo_test import * from bar_test import *
只是为了增加Artur Soler的伟大答案 …
您也可以使用--pattern
选项来指定testing文件的命名方式。
例如,如果你的testing文件被命名为foo_test.py
, bar_test.py
和类似的,你可以使用:
$ ./manage.py test --pattern="*_test.py"