Django, нос, покрытие — пропуск определенных модулей

#django #code-coverage #nose

#django #код-покрытие #нос

Вопрос:

У меня насморк и проблемы с освещением в приложении Django.

У меня есть структура, которая выглядит примерно так:

 app
..__init__.py
..tests.py
..views.py
..models.py
..urls.py
..admin.py
 

Теперь, если я проведу обычные manage.py test app тесты в tests.py запуск без каких-либо проблем. Однако, когда я подключаю nose в качестве набора тестов, тесты перестают выполняться (он находит и выполняет 0 тестов).

Это не проблема с конфигурацией носа, так как у меня точно такая же конфигурация успешно работает в других, аналогично структурированных приложениях django.

Теперь, если я беру tests.py файл и изменяю его в каталог с именем «tests» и помещаю в него все эти тесты __init__.py , тесты выполняются с использованием nose.

Чтобы еще больше усложнить ситуацию, когда эти тесты выполняются как __init__ файл, отчет о покрытии показывает только покрытие на admin.py , __init__.py , и models.py , но он пропускает admin.py и views.py . Как указано выше, это не проблема конфигурации nose, поскольку у меня есть пакет, работающий включительно с другими приложениями с аналогичной структурой, и он работает так, как ожидалось.

Какие-нибудь подсказки? Я бьюсь головой об стену над этим…

Комментарии:

1. Одна вещь, которую я заметил: покрытие игнорирует некоторые модули, если вы не импортировали их непосредственно из своих тестов. Вероятно, покрытие игнорирует все те модули, которые не были импортированы до начала тестов (исключить пакеты — папку с __init__.py ), но некоторые из них могут быть автоматически импортированы django-nose или что-то в этом роде.

Ответ №1:

Вы пытались заставить django_nose запускать определенные тесты, указав аргумент с именем —tests ? Может быть, один из них будет работать:

 python manage.py test --tests=tests
python manage.py test --tests=app.tests
python manage.py test --tests=app.tests:MyUnitTestClass