У меня есть набор из тысяч тестов выглядящий примерно так:
class OneOfTheBaseTest:
def setUp(self):
# prepare db
self.create_test_data_method_1()
self.create_test_data_method_2()
...
self.create_test_data_method_99()
class TestCase_1(..., OneOfTheBaseTest):
def setUp(self):
# do something
super().setUp()
# do something more
def test_00_test_some_things(self):
# tests
...
def test_99_test_other_thigns(self):
# tests
Т.е. есть базовый тест с кучей методов создания различных наборов моделей, который в setUp наполняет бд нужными начальными данными. Тесты наследуются от него и расширяют поведение setUp выполняя дополнительные специфичные настройки до или после super().setUp(). Проблема - начальных данных много, OneOfTheBaseTest.setUp выполняется долго и без особого смысла - он просто тысячи раз наполняет бд одинаковыми данными - в результате тесты проходят по полдня. В django существует setUpTestData призванный избавиться от этой проблемы, но предполагает полное переписывание всех методов и в данном случае это совсем не вариант. Как обойти эту проблему? Может существует какой-нибудь декоратор который заставляет setUp() вести себя как setUpTesData?