Используя покрытие, как проверить эту строку?
У меня есть простой тест:
class ModelTests(TestCase):
def test_method(self):
instance = Activity(title="Test")
self.assertEqual(instance.get_approved_member_count(), 0)
Моя проблема в том, что покрытие по-прежнему показывает строку get_approved_member_count
как НЕ проверенную:
![enter image description here]()
Как я могу удовлетворить вышеуказанное для покрытия?
Для запуска тестов я использую Django Nose с 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
Ответы
Ответ 1
Отчет о покрытии показывает, что этот метод вызывается (строка 80 - зеленая). Но это также показывает, что он никогда не определялся (строка 75 красная).
Это классическая проблема с запуском покрытия слишком поздно. Самый простой способ исправить это - использовать покрытие для запуска вашего тестового бегуна вместо использования тестового бегуна для запуска покрытия:
$ coverage run -m nose --verbosity=1
ОБНОВЛЕНО: для использования с вашей исходной командой:
$ coverage run manage.py test
но сначала вы хотите удалить плагин для покрытия носа.