Изменение базы данных с помощью только одной сессии pytest-django
Я использую pytest-django 4.1 с Django 2.2 в своем приложении. У меня есть две базы данных для моих тестов:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'default_db',
'USER': '',
'PASSWORD': ''
},
'second': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'second_db',
'USER': '',
'PASSWORD': ''
},
}
Во время каждого сеанса тестирования создаются две базы данных:
Creating test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...
Creating test database for alias 'second' ('file:memorydb_default?mode=memory&cache=shared')...
Я не хочу использовать их постоянно, только для нескольких тестов. Поэтому я ищу способ разрешить создание второй базы данных только для некоторых сессий. К сожалению, я не смог найти способ сделать это.
Джанго документация о тестах рекомендует использовать modify_settings или override_settings, но это не работает в pytest-django. Я пытался использовать django_db_setup fixture или pytest_sessionstart hook, но в итоге получил ситуацию, когда db_router правильно изменен, но база данных не изменена, поэтому конфигурация django не сбрасывается редактированием settings.DATABASES после настройки pytest.
Я могу заставить его работать только для всей конфигурации, например:
# project/conftest.py
def pytest_configure(config):
from django.conf import settings
settings.DATABASE_ROUTERS = []
settings.DATABASES.pop('second', None)
Есть ли способ изменить django.conf.settings.DATABASES между сессиями в pytest-django после запуска pytest (то есть после pytest_configure)?