Django 1.6覆盖数据显示virtualenv项目

时间:2014-04-06 11:07:51

标签: python django code-coverage coverage.py

我有一个django 1.6项目,其测试覆盖率最低

当我跑

bash coverage run manage.py test mainapp coverage report --include=mainapp/*

输出

Name               Stmts   Miss  Cover
--------------------------------------
mainapp/__init__       0      0   100%
mainapp/models        42     13    69%
mainapp/tests         20      0   100%
--------------------------------------
TOTAL                 62     13    79%

然而这是非常误导的,因为现在覆盖范围已接近,并且它甚至不包括views.py文件。

如果我只是运行coverage report,它会显示使用site-packages文件创建的virtualenv中requirements.py目录的覆盖率,

整个项目位于https://github.com/vinu76jsr/librarymanagementsystem

2 个答案:

答案 0 :(得分:0)

在我的项目中,我需要向--setting添加manage.py,在您的情况下:

coverage run manage.py test --settings=librarymanagementsystem.settings mainapp
coverage report --include=mainapp/*

对于report命令,必须使用--include以避免site-packages目录包含在coverage中。

如果您使用South,则还应添加--omit="*migrations*"

答案 1 :(得分:0)

要在覆盖率报告中添加视图,您需要对其进行测试!在test_view.py目录中添加mainapp

from django.test import TestCase

class TestCalls(TestCase):
    def test_call_view_denies_anonymous(self):
        response = self.client.get('/', follow=True)
        self.assertRedirects(response, '/login/google/?next=%2F')
[...]

这也会添加urls.py

$ coverage report --include=./*
Name                               Stmts   Miss  Cover
------------------------------------------------------
librarymanagementsystem/__init__       0      0   100%
librarymanagementsystem/settings      34      0   100%
librarymanagementsystem/urls           6      0   100%
mainapp/__init__                       0      0   100%
mainapp/admin                         11      0   100%
mainapp/models                        42     13    69%
mainapp/test_view                      5      0   100%
mainapp/tests                         20      0   100%
mainapp/views                         61     35    43%
manage                                 6      0   100%
------------------------------------------------------
TOTAL                                186     48    74%

注意:您不应直接使用unittest,而应使用django.testsee doc (first warning)