Django Pytests в контейнере docker не использует временную базу данных sqlite3
Я запускаю pytest на приложении django, которое живет в контейнере docker. Pytest запускается в контейнере docker после его сборки. Обычно приложение django обращается к контейнеру mysql, запущенному на том же хосте. Я пытался использовать sqlite3 db вместо этого для тестирования, но у меня возникли проблемы с тем, чтобы заставить его использовать это вместо контейнера mysql.
Я добился того, что это работает одним способом: test_settings.py:
from .settings import *
# Override the DATABASES setting to use SQLite for tests
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': ':memory:',
}
}
pyproject.toml:
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = [
"--ds=django_app.test_settings",
]
[tool.pytest.ini_options.env]
PYTHONPATH = "web"
Я не хочу делать это таким образом из-за импорта подстановочных знаков (что также не нравится моему ruff linter).
Я пытался перезаписать его с помощью conftest.py, но, похоже, он снова перезаписывается переменной DJANGO_SETTINGS_MODULE env, которая устанавливается в env-файле контейнера.
Как заставить мой pytest использовать sqlite3 без использования этого подстановочного знака импорта в test_settings.py? Или вообще без использования test_settings.py?
Спасибо