Pytest: как подделать запрос к базе данных в модуле

У меня есть модуль с различными функциями внутри и несколькими глобальными переменными, определенными в начале модуля.

module.py

MIN_PLACE = 7
START_DAY = 4

func1():
    pass

func2():
    pass

func3():
    pass

....

tests.py

@pytest.mark.django_db
test_func1():
   #logic

.....

Для этого модуля были написаны тесты (несколько десятков) и все работает. Но мне нужно было сделать переменные динамическими, с возможностью изменять их из админ-панели django и хранить в базе данных

MIN_PLACE: int = int(RedshiftQueryParam.objects.get(name=RedshiftQuery.MIN_PLACE).value)

START_DAY: int = int(RedshiftQueryParam.objects.get(name=RedshiftQuery.START_DATE).value)

После этого все тесты упали с сообщением об ошибке

E   RuntimeError: Database access not allowed, use the "django_db" mark, or the "db" or "transactional_db" fixtures to enable it.

Для того чтобы использовать ссылку на базу данных для тестирования функции, используется декоратор @pytest.mark.django_db

Но как быть, если обращение к базе данных происходит в теле модуля, а не в конкретной функции? Каждый раз, когда контекст pytest входит в модуль, он пытается подключиться к базе данных. Как это можно исправить? Можно ли это сделать глобально в одном месте, чтобы не исправлять все тестовые файлы?

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