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 входит в модуль, он пытается подключиться к базе данных. Как это можно исправить? Можно ли это сделать глобально в одном месте, чтобы не исправлять все тестовые файлы?