Mockowanie zależności w testach FastAPI
Dowiedz się, jak izolować endpointy FastAPI w testach przez nadpisywanie zależności i mockowanie usług zewnętrznych.
Mockowanie zależności w testach FastAPI to bezpłatna lekcja FastAPI Backend Development Bootcamp na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej FastAPI Backend Development Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs FastAPI Backend Development Bootcamp zawiera 4 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
Why Mock Dependencies?
When testing a FastAPI endpoint, you often want to isolate the route logic from external systems like databases, payment gateways, or third-party APIs.
Mocking replaces those slow or unreliable parts with predictable fakes so your tests stay fast and deterministic.
FastAPI Dependency Overrides
FastAPI exposes app.dependency_overrides, a dictionary that maps a real dependency to a fake one during testing.
This is the cleanest way to swap a database session or auth check without touching production code.
app.dependency_overrides[get_db] = override_get_dbA Dependency to Override
Imagine an endpoint that depends on a database session.
from fastapi import Depends
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@app.get("/users/{uid}")
def read_user(uid: int, db=Depends(get_db)):
return db.query(User).get(uid)Providing a Fake Session
In your test, define a function that yields an in-memory or test session, then register it as an override.
def override_get_db():
db = TestingSessionLocal()
try:
yield db
finally:
db.close()
app.dependency_overrides[get_db] = override_get_dbClearing Overrides
Always clear overrides after a test so they do not leak into other tests.
Use app.dependency_overrides.clear() in teardown or a pytest fixture finalizer.
app.dependency_overrides.clear()Mocking with unittest.mock
For non-dependency code such as a helper that calls an external API, use unittest.mock.patch to replace the function.
from unittest.mock import patch
with patch("app.services.send_email") as mock_send:
mock_send.return_value = True
response = client.post("/signup", json=payload)
mock_send.assert_called_once()Using MagicMock Return Values
A MagicMock lets you script return values and inspect how it was called.
from unittest.mock import MagicMock
fake_client = MagicMock()
fake_client.charge.return_value = {"status": "ok"}Mocking Async Functions
FastAPI is async-friendly. To mock an async dependency, use AsyncMock so awaiting it works correctly.
from unittest.mock import AsyncMock
mock_repo = AsyncMock()
mock_repo.get_user.return_value = {"id": 1, "name": "Ada"}Mocking Auth Dependencies
To bypass authentication in a test, override the auth dependency to return a fake user.
def fake_current_user():
return User(id=1, role="admin")
app.dependency_overrides[get_current_user] = fake_current_userVerifying Mock Calls
Mocks record every interaction. Assert that your code called the dependency the expected way.
mock_send.assert_called_once_with(to="a@b.com")
assert mock_repo.save.call_count == 1Fixture-Based Overrides
Wrap overrides in a pytest fixture for reuse and automatic cleanup.
import pytest
@pytest.fixture
def client_with_db():
app.dependency_overrides[get_db] = override_get_db
yield TestClient(app)
app.dependency_overrides.clear()Quick Check
Test your mocking knowledge.
Recap
You learned how to isolate FastAPI endpoints in tests:
- dependency_overrides swaps dependencies like DB sessions or auth
- patch / MagicMock / AsyncMock fake external functions
- Always clear overrides after each test
Mocking keeps tests fast, deterministic, and focused on your own logic.
Ucz się FastAPI Backend Development Bootcamp dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 21
- Lekcje
- 84
Często zadawane pytania
Czy lekcja „Mockowanie zależności w testach FastAPI” jest bezpłatna?
Tak — pełny tekst „Mockowanie zależności w testach FastAPI” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu FastAPI Backend Development Bootcamp, przejdź na CoddyKit PRO. Kurs FastAPI Backend Development Bootcamp zawiera 4 lekcji w sumie.
Co nauczysz się w „Mockowanie zależności w testach FastAPI”?
Dowiedz się, jak izolować endpointy FastAPI w testach przez nadpisywanie zależności i mockowanie usług zewnętrznych. Ćwiczysz FastAPI Backend Development Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć FastAPI Backend Development Bootcamp?
Nie wymagamy żadnego doświadczenia. FastAPI Backend Development Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Mockowanie zależności w testach FastAPI”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji FastAPI Backend Development Bootcamp?
Tak. Każda lekcja FastAPI Backend Development Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Testy jednostkowe za pomocą Pytest
- Testy integracyjne endpointów FastAPI
- Debugowanie aplikacji FastAPI
- Mockowanie zależności w testach FastAPI