Используя покрытие, как проверить эту строку?

У меня есть простой тест:

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

но сначала вы хотите удалить плагин для покрытия носа.