Django инициализирует тестирование данных для всех тестовых классов - PullRequest
0 голосов
/ 16 сентября 2018

Мне нужно добавить тест в мой проект django, мне нужно создать тест данных перед выполнением тестов.Я прочитал о данных теста setUp в этот вопрос .Я могу создать данные в setUpClass для всего теста в классе.Создание моего полного теста данных - это трудоемкий подход, поэтому я хочу запустить его один раз для всех тестовых классов, есть ли какой-либо подход для однократной настройки данных для всех тестовых классов?

1 Ответ

0 голосов
/ 17 сентября 2018

Я нашел свой ответ, надеюсь, он может помочь кому-то еще.Основан на django docs .

Тестовый прогон - это класс, определяющий метод run_tests ().Django поставляется с классом DiscoverRunner, который определяет стандартное поведение тестирования Django.Этот класс определяет точку входа run_tests (), а также выбор других методов, которые используются run_tests () для установки, выполнения и демонтажа набора тестов.

В случае этого вопросаВ этом классе есть 2 полезных метода. setup_databases и teardown_databases , поэтому мы можем перезаписать их для инициализации данных для всех классов тестирования.

from django.test.runner import DiscoverRunner as BaseRunner

class MyMixinRunner(object):
    def setup_databases(self, *args, **kwargs):
        temp_return = super(MyMixinRunner, self).setup_databases(*args, **kwargs)
        # do something
        return temp_return

    def teardown_databases(self, *args, **kwargs):
        # do somthing
        return super(MyMixinRunner, self).teardown_databases(*args, **kwargs)

class MyTestRunner(MyMixinRunner, BaseRunner):
    pass

после определения тестакласс бегуна нам нужно добавить TEST_RUNNER в настройки:

TEST_RUNNER = 'path.to.MyTestRunner'
...