为Django的发现者添加覆盖范围。
django-discoverage的Python项目详细描述
将coverage添加到django 1.6的测试中 Runner和Carl Meyer还有Jannis Leidel的django-discover-runner。
灵感来自django-coverage。
Django Discoverage适用于Django 1.4及以上版本。如果您使用的是django 1.4 或者1.5,django discover runner是必需的,并且将自动 安装。该包反向传输^{tt1}的实现$ 包含在Django 1.6中。
快速使用
要运行测试,请键入:
./manage.py test [options] [appname …]
在没有代码覆盖率的情况下运行测试(即运行django-discover-runner 相反,请键入:
./manage.py test –no-coverage [options] [appname …]
如果要使用--no-coverage选项,请确保添加 discoverage到您的INSTALLED_APPS。
详细用法
django的DiscoverRunner的目标之一(之前 django-discover-runner)允许分离django应用程序的测试 从测试代码来看。由于测试不再驻留在应用程序中, django-discoverage需要一种不同的方法来知道要包含哪些应用程序 报道报道。跑步者有两种方法来完成这项工作,下面将讨论这两种方法。
首先,它试图从包的名称推断您正在测试哪些应用程序 测试模块所在的位置。例如,如果您有一个应用blog和 在应用程序的模块tests.blog.test_views中测试应用程序的视图 将包含在保险报告中。如果应用程序是 在INSTALLED_APPS中显示为myproject.blog。
此行为由PKG_NAME_APP_DISCOVERY设置控制。
虽然在默认情况下没有打开,但测试的应用程序也可以从 测试模块。例如,如果MODULE_NAME_APP_DISCOVERY是True并且 有一个名为tests.test_blog的模块,将包含blog应用程序 在报告中。您可以重写用于提取应用程序的正则表达式 使用MODULE_NAME_DISCOVERY_PATTERN设置命名。
django-discoverage查找应用程序的第二种方法是 可在三个位置输入应用程序名称(默认命名为TESTS_APPS):
- 在套件中的TestCase实例上。
- 在TestCase子类的模块中(默认情况下为test*.py)。
- 在TestCase子类的立即包中。如果MyTestCase在 包tests.myapp.test_views,运行程序检查tests.myapp。它 当前不遍历父包。
假设您有以下测试模块,tests.blog.test_views:
TESTS_APPS = ('blog',) class MyTestCase(TestCase): TESTS_APPS = ('mycoolapp', 'myproject.anothercoolapp') ...
应用程序中的所有模块blog、mycoolapp和 myproject.anothercoolapp将与任何应用一起包含在报表中 列在test.blog.TESTS_APPS中。
但是,OMIT_MODULES中指定的模块不会出现在报表中。
设置
- PKG_NAME_APP_DISCOVERY
- 确定是否从测试模块的包中猜测已测试的应用程序 名字。默认打开。
- MODULE_NAME_APP_DISCOVERY
- 确定是否根据测试模块的名称猜测已测试的应用。
- MODULE_NAME_DISCOVERY_PATTERN
- 一个正则表达式,包含一个捕获组,用于提取应用程序名称 来自模块名(例如来自test_blog的“blog”)。默认为 "test_?(\w+)".
- TESTED_APPS_VAR_NAME
- iterabledjango-discoverage的名称在三个位置中查找 上面列出了。默认为TESTS_APPS。
- COVERAGE_OMIT_MODULES
- 无法由coverage跟踪的模块。有关详细信息,请参见coverage API documentation。默认为['*test*']。
- COVERAGE_EXCLUDE_PATTERNS
影响覆盖率报告的正则表达式列表。如果一行 测试的代码与列表中的一个模式匹配,它将不算作 没接到电话。有关详细信息,请参见coverage API documentation。
默认为:
- def get_absolute_url(self):
- def __unicode__(self):
- def __str__(self):
- 任何包含import *的语句
更改日志
1.0.0(2013-08-27)
- 处理由django-discover-runner 引发的ImproperlyConfigured异常
- Runner现在已成功用于多个项目,因此它将移到1.0。
0.7.2(2013-06-19)
- 需要django discover runner 1.0,它现在支持django 1.6 实现DiscoverRunner。
0.7.1(2013-06-18)
- 仅当安装的django版本是 低于1.6
0.7.0(2013-06-05)
- 支持django 1.6及其实现 DiscoverRunner。
0.6.2(2013-03-13)
- 将COVERAGE_OMIT_MODULES的默认值改回['*test*']
0.6.1(2013-03-06)
- 包括South的测试数据库修补
0.6.0(2013-02-05)
- python 3支持
- 应用程序发现方法测试套件
- --no-coverage选项