Подтвердить что ты не робот

Как запустить тесты только для всех моих приложений Django?

Прямо сейчас, если я хочу запускать тесты из всех моих приложений, я иду:

python manage.py test app1 app2 app3

Если я запустил:

python manage.py test

Выполняется проверка всех приложений в INSTALLED_APPS, включая django. Есть ли простая команда для запуска тестов всех приложений, которые я создал?

4b9b3361

Ответ 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)