Добавляйте тесты, не относящиеся к приложениям, в тесты, которые запускаются при выполнении теста python manage.py - PullRequest
0 голосов
/ 29 августа 2018

В моем проекте Django есть несколько приложений с соответствующими тестами. Он также имеет пакет utils, который имеет свои собственные тесты.

Пакет utils находится в папке на том же уровне, что и manage.py, и его тесты находятся в подпапке с именем tests в файлах с именем test_xxx.py

Когда я запускаю python manage.py test Django запускает все тесты для всех приложений в моем проекте, но не запускает тесты для пакета utils. Я могу запустить тесты для пакета utils, запустив python manage.py test utils.

Что я хотел бы сделать, так это то, что при запуске python manage.py test также запускаются тесты на утилиты, так что одна команда проверяет весь пакет для моего проекта. Я не смог найти что-либо в документации или поиске в Google или здесь, как это сделать. Есть идеи?

Спасибо за вашу помощь !!

--- Дополнительные детали ---

Структура каталогов

├── project
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
├── ...
├── app1
│   ├── __init__.py
│   ├── urls.py
│   ├── views.py
│   ├── ...
│   └── tests
│        ├── test_views.py
│        └── test_models.py
├── app2
│   ├── __init__.py
│   ├── urls.py
│   ├── views.py
│   ├── ...
│   └── tests
│        ├── test_views.py
│        └── test_models.py
└── utils
    ├── __init__.py
    ├── code.py
    └── tests
         └── test_utils.py

Команда для выполнения тестов

python manage.py test

... который выполняет ...

nosetests --with-coverage --cover-package=app1,app2, utils --cover-html --cover-erase --logging-filter='selenium' --verbosity=1

И отчет о покрытии показывает, что все тесты для app1 и app2 были выполнены, но не тесты для утилит

1 Ответ

0 голосов
/ 29 августа 2018

Django использует DiscoverRunner для запуска ваших тестов. Как вы можете видеть здесь: https://docs.djangoproject.com/en/2.1/topics/testing/advanced/#defining-a-test-runner

Первый вариант:

top_level может использоваться для указания каталога, содержащего ваш модули Python верхнего уровня. Обычно Джанго может понять это автоматически, поэтому нет необходимости указывать эту опцию. Если указан, как правило, это каталог, содержащий файл manage.py.

Следовательно, ваш тест должен выполняться тестовым комплектом, потому что он находится в той же папке, что и ваш manage.py. Вы добавили __init__.py в папку тестов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...