Выбор ответа Middle FastAPI и Pydantic обновлено

Подмена зависимостей в тестах

Вопрос

Как в тестах FastAPI подменить зависимость get_payment_client на фейковую?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: app.dependencyoverrides[getpaymentclient] = lambda: FakeClient(). dependencyoverrides это словарь «исходная зависимость - замена», который FastAPI проверяет при построении графа.

Варианты ответа

  1. app.dependency_overrides[get_payment_client] = lambda: FakeClient()правильный ответ
  2. Переопределить функцию get_payment_client через global в модуле тестов
  3. Передать фейковый клиент в query-параметре запроса из тестового клиента
  4. Никак: в тестах придётся поднимать настоящий платёжный сервис в Docker

Разбор

dependency_overrides это словарь «исходная зависимость -> замена», который FastAPI проверяет при построении графа. Замена действует для всех эндпоинтов, использующих зависимость, а после теста словарь очищают. Перезапись функции в модуле не сработает, потому что эндпоинты уже держат ссылку на исходную функцию.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.