在django 1.6上运行所有测试

Luk*_*uke 9 testing django django-testing django-1.6

在django 1.5及更早版本中,python manage.py test默认情况下,运行将运行项目中的所有测试(包括django.contrib中的所有测试).版本1.6之后,默认行为是运行当前目录中的所有测试.

无论是否使用django.contrib测试,运行所有测试的最佳方法(v 1.6)是什么?

Nic*_*tot 15

Django 1.6 将默认测试运行器更改为:

TEST_RUNNER = 'django.test.runner.DiscoverRunner'
Run Code Online (Sandbox Code Playgroud)

您可以通过添加到settings.py来恢复旧行为:

TEST_RUNNER = 'django.test.simple.DjangoTestSuiteRunner'
Run Code Online (Sandbox Code Playgroud)

正如发行说明中所解释的那样:

前一个运行器(django.test.simple.DjangoTestSuiteRunner)仅在INSTALLED_APPS中的Python包的models.py和tests.py模块中找到了测试.

新的运行器(django.test.runner.DiscoverRunner)使用unittest2内置的测试发现功能(Python 2.7+标准库中的unittest版本,与Django捆绑在一起).通过测试发现,测试可以位于名称与模式测试*.py匹配的任何模块中.

新的运行器需要一个模块的虚线路径列表,其中应该发现测试,因此您也可以通过django contrib这种方式运行测试:

python manage.py test myproject django.contrib path.to.someotherapp
Run Code Online (Sandbox Code Playgroud)

不会INSTALLED_APPS自动运行应用程序中的所有测试.对于更复杂的解决方案,您可以编写自己的跑步者,从新老跑步者那里获取.

另请注意,通常不需要运行测试django.contrib,因为这些测试不是测试您的应用程序,而是测试Django发行版.Django提供了更多的测试,这些测试都不是由跑步者运行的.