为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_DISCOVERYTrue并且 有一个名为tests.test_blog的模块,将包含blog应用程序 在报告中。您可以重写用于提取应用程序的正则表达式 使用MODULE_NAME_DISCOVERY_PATTERN设置命名。

django-discoverage查找应用程序的第二种方法是 可在三个位置输入应用程序名称(默认命名为TESTS_APPS):

  1. 在套件中的TestCase实例上。
  2. TestCase子类的模块中(默认情况下为test*.py)。
  3. TestCase子类的立即包中。如果MyTestCase在 包tests.myapp.test_views,运行程序检查tests.myapp。它 当前不遍历父包。

假设您有以下测试模块,tests.blog.test_views

TESTS_APPS = ('blog',)

class MyTestCase(TestCase):
    TESTS_APPS = ('mycoolapp', 'myproject.anothercoolapp')
    ...

应用程序中的所有模块blogmycoolappmyproject.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)

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选项

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaMaven没有识别junit测试   正则表达式替换Java中字符串中的所有“(“and”)”   文件移动到另一台计算机时出现java错误“实例化servlet类”   服务器上的java服务   Spring数据JPA上的java嵌套@Transactional注释行为   eclipse中的Java Tomcat项目   java在Tomcat上部署web应用程序   如何解决“java.lang.IllegalStateException:ArrayAdapter要求资源ID为TextView”错误?   java在条形码上方添加文本,并使用烧烤更改字体大小   java与php基准测试   java使用正则表达式提取特定模式   java扫描器。findInLine()大量泄漏内存   java HTTP:差异请求属性和POST参数   返回空指针的Java方法?   java验证密码不包含名称中的3个以上连续字符   Java中带泛型的静态多态性   java在Android中获得最后一个已知位置   java为什么Groovy的Map比Array更具可伸缩性?   编码如何在Java中生成八进制字符串?   java Hibernate:使用单例会话写入日志(无刷新)