FastAPI 테스트에서 종속성 모킹하기
종속성을 재정의하고 외부 서비스를 모킹해 테스트에서 FastAPI 엔드포인트를 격리하는 방법을 배웁니다.
FastAPI 테스트에서 종속성 모킹하기은(는) CoddyKit의 무료 FastAPI Backend Development Bootcamp 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 FastAPI Backend Development Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. FastAPI Backend Development Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.
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.
AI 튜터와 함께 FastAPI Backend Development Bootcamp을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 21
- 레슨
- 84
자주 묻는 질문
“FastAPI 테스트에서 종속성 모킹하기” 강의는 무료인가요?
네 — “FastAPI 테스트에서 종속성 모킹하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 FastAPI Backend Development Bootcamp 강의 전체를 잠금 해제할 수 있습니다. FastAPI Backend Development Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
“FastAPI 테스트에서 종속성 모킹하기”에서 뭘 배우나요?
종속성을 재정의하고 외부 서비스를 모킹해 테스트에서 FastAPI 엔드포인트를 격리하는 방법을 배웁니다. 브라우저에서 직접 실행하는 실습 코드로 FastAPI Backend Development Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
FastAPI Backend Development Bootcamp을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 FastAPI Backend Development Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“FastAPI 테스트에서 종속성 모킹하기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 FastAPI Backend Development Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 FastAPI Backend Development Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Pytest를 활용한 단위 테스트
- FastAPI 엔드포인트 통합 테스트
- FastAPI 애플리케이션 디버깅
- FastAPI 테스트에서 종속성 모킹하기