Una dintre cele mai elegante caracteristici ale sistemului de Dependency Injection din FastAPI este dicționarul app.dependency_overrides.
În loc să folosești biblioteci complexe de mocking (cum ar fi unittest.mock.patch), poți instrui FastAPI să înlocuiască orice dependență reală (cum ar fi get_db sau get_current_user) cu o funcție de testare mock. La finalul testului, golirea dicționarului app.dependency_overrides.clear() restabilește comportamentul inițial.
Exemplu: Simularea autentificării în teste folosind dependency_overrides
from fastapi import FastAPI, Depends
from fastapi.testclient import TestClient
app = FastAPI()
async def get_current_user():
# În producție, verifică tokenul JWT...
pass
@app.get("/profile")
async def profile(user = Depends(get_current_user)):
return {"user": user}
# În fișierul de test:
client = TestClient(app)
def override_user():
return {"username": "utilizator_test_mock", "role": "admin"}
def test_profile_with_mock_user():
# Suprascriem dependența:
app.dependency_overrides[get_current_user] = override_user
response = client.get("/profile")
assert response.status_code == 200
assert response.json()["user"]["username"] == "utilizator_test_mock"
# Curățăm suprascrierile:
app.dependency_overrides.clear()
Întrebări & Exemple de Cod:
Suprascrierea Dependențelor cu app.dependency_overridesAi o nelămurire despre utilizarea comenzii
Suprascrierea Dependențelor cu app.dependency_overridessau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.