Suprascrierea Dependențelor cu app.dependency_overrides în FastAPI

testing FastAPI 0.110+ / Python 3.10+ Q&A / Distribuie cod

Înlocuirea bazei de date de producție sau a serviciilor externe de plată cu versiuni Mock în timpul execuției testelor.

Sintaxă
app.dependency_overrides[get_db] = override_get_db

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()

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Suprascrierea Dependențelor cu app.dependency_overrides

Ai o nelămurire despre utilizarea comenzii Suprascrierea Dependențelor cu app.dependency_overrides sau 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.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.