Фиксация pytest-django django_db_server не работает

Я хотел бы использовать специализированную тестовую базу данных для модульного тестирования моего приложения Django. Я использую pytest вместе с pytest-django. Согласно инструкциям pytest-django, я предоставил свой собственный пользовательский django_db_setup фикстур в conftest.py файле следующим образом:

from pathlib import Path

import pytest
from django.conf import settings


@pytest.fixture(scope='session')
def django_db_setup():
    base_dir = Path(__file__).parent
    path = base_dir / 'test_db.sqlite3'
    assert path.exists()
    assert path.is_file()

    settings.DATABASES['default'] = {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': path
    }

Я могу подтвердить, что этот код выполняется, когда я запускаю модульные тесты, и база данных test_db.sqlite3 находится. Однако модульные тесты все еще ссылаются на мою базу данных разработки , а не на мою тестовую базу данных.

Как мне заставить pytest-django ссылаться на мою тестовую базу данных, а не на базу данных разработки?

Я только начал изучать pytest и pytest-django несколько дней назад, но я использую тестовую базу данных, создав файл pytest.ini в корневой папке моего проекта следующим образом:

[pytest]
DJANGO_SETTINGS_MODULE = myproject.test_settings

дерево папок выглядит примерно так:

myproject
  |  
  ------app_one
  |
  ------myproject
    |
    ------settings.py
    |
    --------test_settings.py

файл test_settings.py выглядит следующим образом

from .settings import *


DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": "db_test.sqlite3",
    }
}

Вы можете узнать больше об этом в docs.

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