组织Djangounit testing

现在我有我的Djangounit testing生活在mcif/tests.py 。 我宁愿有更像mcif/tests/foo_test.pymcif/tests/bar_test.py等等的东西,但是如果我按照这种方式组织我的testing,Django就会翻转。

有没有办法做我想做的事情,或者我必须在一个文件中有我所有的testing?

从Django 1.6版本开始,testing发现机制发生了变化。 您不再需要从tests/__init__.py导入所有内容,但是现在您必须确保所有包含testing的文件都与模式test*.py匹配。

因此,现在应该有app/tests/test_models.pyapp/tests/test_views.py ,而不是app/tests/models.pyapp/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.pybar_test.py和类似的,你可以使用:

 $ ./manage.py test --pattern="*_test.py"