Фиксация 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.