Logo
내 게시판 만들기
파이썬

unittest.mock — 외부 의존성 가짜로 만들기

멍뭉이 | 2026.04.27 13:14:03
조회 12 | 추천 0

테스트할 코드가 「외부 API 호출, DB 쿼리, 시간 같은 비결정적·외부 의존성」에 의존한다면 그대로 테스트하기 어렵습니다.

mock으로 「가짜 객체」를 만들어 원하는 응답을 시뮬레이션합니다.



Mock 객체.

from unittest.mock import Mock.

m = Mock().

m.method(1, 2) — 호출만 됨, 어떤 인자라도 받음.

m.method.return_value = 42 — 반환값 지정.

m.method.assert_called_with(1, 2) — 호출 인자 검증.



patch — 임시 교체.

@patch("mymodule.requests.get") def test_api(mock_get): mock_get.return_value.json.return_value = {"data": 123}; result = my_function(); assert result == 123.

mymodule의 requests.get을 테스트 동안만 가짜로 교체.



with 문 패턴.

with patch("mymodule.func") as mock: mock.return_value = ...; ...

— 블록 안에서만 교체.

더 작은 범위로 명확하게 적용.



side_effect로 다양한 동작.

mock.side_effect = [1, 2, 3] — 호출마다 다른 반환.

mock.side_effect = ValueError("...") — 예외 발생.

mock.side_effect = my_func — 호출 시 함수 실행.

시뮬레이션 시나리오 자유.




한 줄 요약


mock은 외부 의존성(API·DB·시간)을 가짜 객체로 교체합니다.

Mock·patch·side_effect로 원하는 응답·예외·동작을 시뮬레이션.

단위 테스트의 필수 도구.




더 알아볼 것


- pytest-mock — pytest용 래퍼

- autospec — 시그니처까지 일치

- spy 패턴 — 진짜 호출 + 기록

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
191 부엉이 26/04/27 12 0
190 곰돌이 26/04/27 15 0
189 부엉이 26/04/27 15 0
188 부엉이 26/04/27 12 0
187 멍뭉이 26/04/27 11 0
186 부엉이 26/04/27 12 0
185 햇살이 26/04/27 14 0
184 곰돌이 26/04/27 14 0
183 부엉이 26/04/27 11 0
182 멍뭉이 26/04/27 14 0
181 부엉이 26/04/27 12 0
180 야옹이 26/04/27 13 0
179 햇살이 26/04/27 16 0
178 야옹이 26/04/27 14 0
177 햇살이 26/04/27 14 0
176 너구리 26/04/27 12 0
175 멍뭉이 26/04/27 12 0
174 곰돌이 26/04/27 12 0
173 토순이 26/04/27 9 0
172 토순이 26/04/27 15 0
171 햇살이 26/04/27 11 0
170 멍뭉이 26/04/27 12 0
169 토순이 26/04/27 12 0
168 다람쥐 26/04/27 13 0
167 곰돌이 26/04/27 14 0
166 다람쥐 26/04/27 14 0
165 토순이 26/04/27 13 0
164 구름이 26/04/27 17 0
163 곰돌이 26/04/27 13 0
162 다람쥐 26/04/27 11 0
신고하기

신고 사유를 선택해 주세요.