Python Django对URL的覆盖率测试为0%,为什么?
使用Django鼻。我对我的URL进行了测试,但覆盖率仍然为我的URL提供0%,为什么 python manage.py测试配置文件 这是我的报道:Python Django对URL的覆盖率测试为0%,为什么?,python,django,django-testing,coverage.py,python-coverage,Python,Django,Django Testing,Coverage.py,Python Coverage,使用Django鼻。我对我的URL进行了测试,但覆盖率仍然为我的URL提供0%,为什么 python manage.py测试配置文件 这是我的报道: Name Stmts Miss Cover Missing ---------------------------------------------------------------- profiles 0
Name Stmts Miss Cover Missing
----------------------------------------------------------------
profiles 0 0 100%
profiles.migrations 0 0 100%
profiles.migrations.0001_initial 6 0 100%
profiles.models 0 0 100%
profiles.urls 4 4 0% 1-9
----------------------------------------------------------------
TOTAL 10 4 60%
----------------------------------------------------------------
$ coverage run nosetests.py ....
这是我的URL测试之一
url\u tests.py
import nose.tools as noz
from django.test import TestCase
from django.core.urlresolvers import resolve, reverse
class URLsTest(TestCase):
def test_user_list(self):
url = reverse('api_user_list', args=[])
noz.assert_equal(url, '/api/user/')
通常这与coverage.py在过程中启动太晚有关。确保尽早启动的最简单方法是在覆盖范围内运行测试运行程序:
Name Stmts Miss Cover Missing
----------------------------------------------------------------
profiles 0 0 100%
profiles.migrations 0 0 100%
profiles.migrations.0001_initial 6 0 100%
profiles.models 0 0 100%
profiles.urls 4 4 0% 1-9
----------------------------------------------------------------
TOTAL 10 4 60%
----------------------------------------------------------------
$ coverage run nosetests.py ....
url.py的一个相关细节:它只包含导入时执行的代码。因此,整个文件在Django启动并导入URL.py时执行。这与大多数文件不同,这些文件定义的类或函数的主体稍后执行。我使用的是Django Nose。然而,为什么其他的测试都可以,而不是这个呢?无论顺序如何,它都应该报告一些内容,除非我对URL的测试有误。覆盖率只能测量在覆盖率启动后执行的代码。如果Django Nose在启动coverage.py之前导入(并因此执行)urls.py,那么您将看到URL.py的报告率为0%。您是否尝试过在覆盖率下运行测试,如我在答案中所示?@Sputnik您的测试显示您的urls.py已导入和处理,但没有直接执行urls.py中的任何代码。。。正如Ned所说,Django可能在测试运行者开始测量之前已经处理了您的URL.pycoverage@NedBatchelder我已经通过命令安装了coverage,coverage不可用。如果没有看到更多的代码库,我不确定我是否能提供帮助;我可以确认,将我的一个项目(在Django 1.6上)移动到使用Django nose,运行python manage.py test——使用覆盖率,并使用一个测试来测试URL,可以为我的URL.py生成正确的覆盖率报告;因此,这可能与您的代码/用法有关。