Как запустить тесты только для всех моих приложений Django? - PullRequest
20 голосов
/ 24 февраля 2010

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

python manage.py test app1 app2 app3

Если я бегу:

python manage.py test

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

Ответы [ 4 ]

24 голосов
/ 24 февраля 2010

К сожалению, нет такой команды. Джанго не может сказать, какие приложения «твои», а какие - чужие.

Я бы предложил написать новую команду управления, назовите ее mytest. Затем создайте новый параметр MY_INSTALLED_APPS. Команда mytest просто запустит тест для каждого приложения в MY_INSTALLED_APPS. Вы хотите, чтобы команда mytest была подклассом django.core.management.base.AppCommand. Также будет полезен django.core.management.call_command.

Единственная проблема этого метода заключается в том, что вам придется постоянно поддерживать настройку MY_INSTALLED_APPS, чтобы убедиться, что она верна.

2 голосов
/ 01 апреля 2014

Вы можете создать файл управления / 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)
2 голосов
/ 18 сентября 2013

Это работает лучше в Django 1.6+: при запуске python manage.py test, будут выполняться только ваши тесты (при условии, что у вас есть настройки по умолчанию для TEST_RUNNER)

0 голосов
/ 08 июля 2013

Используйте носовой тест-джанго, он позаботится об этом.

Ссылка: Нос Джанго для запуска только тестов проекта

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