FastAPI Backend Development Bootcamp · Lekcja

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.

Lekcja 4 z 413 kroki

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_db

A 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_db

Clearing 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_user

Verifying 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 == 1

Fixture-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.

Bezpłatny start

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

  1. Testy jednostkowe za pomocą Pytest
  2. Testy integracyjne endpointów FastAPI
  3. Debugowanie aplikacji FastAPI
  4. Mockowanie zależności w testach FastAPI
← Powrót do FastAPI Backend Development Bootcamp