我有一个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
目录的覆盖率,
答案 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.test
。 see doc (first warning)