使用覆盖率,我如何测试这条线?
Using coverage, how do I test this line?
我有一个简单的测试:
class ModelTests(TestCase):
def test_method(self):
instance = Activity(title="Test")
self.assertEqual(instance.get_approved_member_count(), 0)
我的问题是覆盖率仍然显示 get_approved_member_count
行未测试:
如何满足以上覆盖率?
为了 运行 我正在使用 Django Nose with Coverage 的测试:
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
NOSE_ARGS = [
'--with-coverage',
'--cover-html',
'--cover-package=apps.users,apps.activities',
]
控制台:
python manage.py test
/Users/user/Documents/workspace/api/env/lib/python3.4/importlib/_bootstrap.py:321: RemovedInDjango19Warning: django.contrib.contenttypes.generic is deprecated and will be removed in Django 1.9. Its contents have been moved to the fields, forms, and admin submodules of django.contrib.contenttypes.
return f(*args, **kwds)
/Users/user/Documents/workspace/api/env/lib/python3.4/importlib/_bootstrap.py:321: RemovedInDjango19Warning: The utilities in django.db.models.loading are deprecated in favor of the new application loading system.
return f(*args, **kwds)
nosetests --with-coverage --cover-html --cover-package=apps.users,apps.activities --verbosity=1
Name Stmts Miss Cover Missing
---------------------------------------------------------------------------------------
apps.activities 0 0 100%
apps.activities.admin 8 8 0% 1-14
activities.migrations 0 0 100%
activities.migrations.0001_initial 9 0 100%
apps.activities.urls 8 0 100%
etc etc etc
---------------------------------------------------------------------------------------
TOTAL 670 232 65%
----------------------------------------------------------------------
Ran 79 tests in 17.101s
覆盖率报告显示正在调用该方法(第 80 行为绿色)。但它也表明它从未被定义(第 75 行是红色的)。
这是一个经典的覆盖开始太晚的问题。解决此问题的最简单方法是使用覆盖率 运行 你的测试 运行ner,而不是使用测试 运行ner 到 运行 覆盖率:
$ coverage run -m nose --verbosity=1
更新:与您的原始命令一起使用:
$ coverage run manage.py test
但您需要先卸载鼻子覆盖插件。
我有一个简单的测试:
class ModelTests(TestCase):
def test_method(self):
instance = Activity(title="Test")
self.assertEqual(instance.get_approved_member_count(), 0)
我的问题是覆盖率仍然显示 get_approved_member_count
行未测试:
如何满足以上覆盖率?
为了 运行 我正在使用 Django Nose with Coverage 的测试:
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
NOSE_ARGS = [
'--with-coverage',
'--cover-html',
'--cover-package=apps.users,apps.activities',
]
控制台:
python manage.py test
/Users/user/Documents/workspace/api/env/lib/python3.4/importlib/_bootstrap.py:321: RemovedInDjango19Warning: django.contrib.contenttypes.generic is deprecated and will be removed in Django 1.9. Its contents have been moved to the fields, forms, and admin submodules of django.contrib.contenttypes.
return f(*args, **kwds)
/Users/user/Documents/workspace/api/env/lib/python3.4/importlib/_bootstrap.py:321: RemovedInDjango19Warning: The utilities in django.db.models.loading are deprecated in favor of the new application loading system.
return f(*args, **kwds)
nosetests --with-coverage --cover-html --cover-package=apps.users,apps.activities --verbosity=1
Name Stmts Miss Cover Missing
---------------------------------------------------------------------------------------
apps.activities 0 0 100%
apps.activities.admin 8 8 0% 1-14
activities.migrations 0 0 100%
activities.migrations.0001_initial 9 0 100%
apps.activities.urls 8 0 100%
etc etc etc
---------------------------------------------------------------------------------------
TOTAL 670 232 65%
----------------------------------------------------------------------
Ran 79 tests in 17.101s
覆盖率报告显示正在调用该方法(第 80 行为绿色)。但它也表明它从未被定义(第 75 行是红色的)。
这是一个经典的覆盖开始太晚的问题。解决此问题的最简单方法是使用覆盖率 运行 你的测试 运行ner,而不是使用测试 运行ner 到 运行 覆盖率:
$ coverage run -m nose --verbosity=1
更新:与您的原始命令一起使用:
$ coverage run manage.py test
但您需要先卸载鼻子覆盖插件。