Введение
Я пишу модульные тесты для проекта Django, где некоторые записи БД загружаются из файла. Разбирать файл и создавать все записи дорого.
Приложение имеет разные модули для тестов, поэтому я реализую один TestCase
для каждого модуля.
Проблема
Модули полагаются на данные, извлеченные из файла (т.е. им нужна одна и та же БД), но я не могу позволить себе перенастраивать БД для всех разных TestCase
, как здесь:
class TestBehavior_A(TestCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
expensive_db_init()
class TestBehavior_B(TestCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
expensive_db_init()
class TestBehavior_C(TestCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
expensive_db_init()
Я также не могу объединить все свои тестовые примеры в одном классе, иначе это будет беспорядок.
В идеале
Я хотел бы, чтобы одна установка была общей для всех моих тестовых случаев (т. е. вызывать setUpClass
только один раз)
Имея нечто подобное:
class TestBase(TestCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
expensive_db_init()
class TestBehavior_A(TestCase):
pass
class TestBehavior_B(TestCase):
pass
class TestBehavior_C(TestCase):
pass