Django 1.6 覆盖数据显示虚拟环境项目



我有一个 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它会显示使用requirements.py文件创建的 virtualenv 中 site-packages 目录的覆盖范围,

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

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

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

对于 report 命令,必须--include以避免将站点包目录包含在覆盖范围中。

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

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

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。 请参阅文档(第一个警告)

最新更新