Изменение базы данных с помощью только одной сессии 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)?

Вернуться на верх