Может ли вставить данные в django тестовую базу данных перед запуском тестовой среды? Настройка переопределения () не решила - PullRequest
0 голосов
/ 14 февраля 2020

описание проблемы

Я ищу способ вставить данные в django тестовую базу данных перед запуском django test. Это требование происходит потому, что настройка URL написана так, как показано ниже.

urls.py

group_names = Group.objects.values_list('name', flat=True)
for group in group_names :
    url(r'^{}/{}'.format(group,'webindex'), web_index)

Например, если в таблице групп базы данных есть группа 1 и группа 2, URL будет '/ group1 / webindex /' и '/ group2 / webindex / ». Это работает найти в производственной среде. Страница успешно показана. потому что производственная база данных уже завершает групповые данные.
Однако, когда я хочу написать контрольный пример для web_index, возникает проблема. Вот мой код.

tests.py

class webindexTestCase(TransactionTestCase):
    fixtures = ['./auth_group.json']
    def test_webindex(self):
        c = Client()
        r = c.get('/group1/webindex/')
        print(r.status_code)

при запуске теста код ответа http всегда получает 404. Насколько я знаю, это произошло потому, что при запуске django проверить, что URL-адреса были установлены перед вставкой данных группы в тестовую базу данных.
Поэтому мне интересно, есть ли способ вставить данные в django тестовую базу данных перед установкой шаблона URL-адресов или сбросить шаблон URL-адресов при запуске этого теста ?

Что я пробовал

  1. Вручную вставьте данные группы в тестовую базу данных, затем запустите тест:
    Перед запуском python manage.py test вставьте данные группы проверить базу данных. Хотя этот способ работает, код ответа - 200. Однако я ищу способ автоматически сделать это.

  2. Использование setUp():
    Я попытался изменить настройку () в моем тестовом примере, как показано ниже. Это все еще получает 404 HTTPS передышки. На мой взгляд, настройка django urls выполняется до setUp().

class webindexTestCase(TransactionTestCase):
    def setUp(self):
        Group.objects.create(name='group1')

    def test_webindex(self):
        c = Client()
        r = c.get('/group1/webindex/')
        print(r.status_code)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...