@Lepilov

Как обработать запрос в базу данных в теле питоновского модуля во время выполнения тестов (pytest)?

есть питоновский модуль с несколькими десятками функциями в нем и парой переменных

modul.py

MIN_PLACE = 7
START_DAY = 4

func1():
    pass

func2():
    pass

func3():
    pass


Под это дело написаны тесты на pytest

test.py

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

.....


Все стандартно, в случае если тестируемая функция взаимодействует с БД то используется декоратор @pytest.mark.django_db

Но теперь надо что бы параметры определяемые в начале модуля (MIN_PLACE, START_DAY)стали доступны для изменения из админки и соответственно хранились в БД.

Добавил их в таком виде

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

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


Но! Теперь падают все тесты, в которых контекст pytest переходит в модуль modul.py. Т.е. для инициализации переменных происходит необработанный вызов в БД и появляется ошибка

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


Как это дело обработать? Несколько десятков тестов падают с одной и тойже ошибкой.
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ответы на вопрос 1
@bacon
сделай их фикстурой
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы