Атрибут dependency_overrides
Атрибут dependency_overrides применяется к приложению
FastAPI и представляет собой обычный словарь.
Ключом выступает исходная функция-зависимость,
а значением - функция, которой её нужно заменить.
Такой механизм удобен для тестирования:
он позволяет подменить реальную зависимость,
например обращение к базе данных, на простую заглушку.
Изменения вступают в силу сразу после добавления пары
и действуют до тех пор, пока пара не будет удалена.
Синтаксис
app.dependency_overrides[original_dependency] = override_dependency
Чтобы вернуть всё как было, словарь очищают:
app.dependency_overrides.clear()
Пример
Давайте объявим зависимость и подменим её на заглушку:
from fastapi import FastAPI, Depends
app = FastAPI()
def get_value():
return 'real'
def get_value_override():
return 'fake'
app.dependency_overrides[get_value] = get_value_override
@app.get('/')
def index(value: str = Depends(get_value)):
return {'value': value}
Результат выполнения кода:
{"value": "fake"}
Пример
Давайте подменим зависимость в тесте и затем очистим словарь:
from fastapi.testclient import TestClient
from main import app, get_value
def get_value_override():
return 'fake'
client = TestClient(app)
app.dependency_overrides[get_value] = get_value_override
res = client.get('/')
print(res.json())
app.dependency_overrides.clear()
print(app.dependency_overrides)
Результат выполнения кода:
{'value': 'fake'}
{}
Смотрите также
-
класс
FastAPI,
к которому относится данный атрибут -
метод
include_router,
который подключает роутеры к приложению -
метод
mount,
который монтирует подприложение по указанному пути -
метод
exception_handler,
который регистрирует обработчик исключений