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?

Спасибо

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