Как запустить тесты только для всех моих приложений Django?
Прямо сейчас, если я хочу запускать тесты из всех моих приложений, я иду:
python manage.py test app1 app2 app3
Если я запустил:
python manage.py test
Выполняется проверка всех приложений в INSTALLED_APPS
, включая django. Есть ли простая команда для запуска тестов всех приложений, которые я создал?
Ответы
Ответ 1
К сожалению, такой команды нет. Django не может сказать, какие приложения являются "вашими", а не кем-то другим.
Я бы предложил написать новую команду управления, назовите ее mytest. Затем создайте новый параметр MY_INSTALLED_APPS. Команда mytest будет запускать тест для каждого приложения в MY_INSTALLED_APPS. Вам понадобится команда mytest для подкласса django.core.management.base.AppCommand. django.core.management.call_command также будет полезен.
Единственная проблема с этим методом заключается в том, что вам придется постоянно поддерживать параметр MY_INSTALLED_APPS, чтобы убедиться, что он правильный.
Ответ 2
Вы можете создать команду management/commands/testmyapps.py для одного из своих приложений, в котором есть:
from django.core.management.base import BaseCommand, CommandError
import django.core.management.commands.test
from django.core import management
from django.conf import settings
class Command(django.core.management.commands.test.Command):
args = ''
help = 'Test all of MY_INSTALLED_APPS'
def handle(self, *args, **options):
super(Command, self).handle(*(settings.MY_INSTALLED_APPS + args), **options)
Ответ 3
Это лучше работает в Django 1.6+: при запуске python manage.py test,
будут выполняться только ваши тесты (при условии, что у вас есть настройки по умолчанию для TEST_RUNNER)
Ответ 4
Используйте носовой проводник для носа django, он позаботится об этом.
Ссылка:
Джанго нос для запуска только тестов проекта