Используя django-nose и немного кода, вы можете сделать именно то, что вы просили. С django-nose вы можете иметь функции установки и удаления для каждого пакета, для каждого модуля и для каждого класса. Это позволяет вам загружать ваши приборы в одну из высших функций настройки и отключать сброс приборов django.test.TestCase между тестами.
Вот пример тестового файла:
from django.test import TestCase
from django.core import management
def setup():
management.call_command('loaddata', 'MyFixture.json', verbosity=0)
def teardown():
management.call_command('flush', verbosity=0, interactive=False)
class MyTestCase(TestCase):
def _fixture_setup(self):
pass
def test_something(self):
self.assertEqual(1, 1)
Обратите внимание, что установка и демонтаж находятся за пределами класса. Настройка будет запущена до всех тестовых классов в этом файле, а разборка будет запущена после всех тестовых классов.
Внутри класса вы заметите метод def _fixture_setup (self) . Это переопределяет функцию, которая сбрасывает базу данных между каждым тестом.
Имейте в виду, что если ваши тесты что-то записывают в базу данных, это может сделать ваши тесты недействительными. Таким образом, любые другие тесты, для которых необходимо повторно устанавливать приборы для каждого теста, должны быть помещены в другой файл теста.