테스트는 버그가 있음을 보여줄 뿐, 버그가 없음을 보여줄 수는 없다.
- 에츠허르 비버 데이크스트라 -
2차 프로젝트 중 카카오 소셜 로그인 unittest 작성하기 위해 mocking과 patching이 필요하다. 왜냐하면 실제로 unittest마다 카카오 api를 호출할 수 없기 때문이다. 카카오 로그인 api의 경우 비용이 들지 않지만 실제로 몇몇 api의 경우 비용을 지불해야하는데 테스트 때마다 비용이 청구되면 안되기 때문이다.
구체적인 내용은 아래 코드를 보면서 설명하도록 한다.
from unittest.mock import patch, MagicMock
카카오 소셜 로그인의 unittest를 작성하기 위해 필요한 모듈 import

patch 함수는 기존의 데코레이터 형식으로 사용한다. @patch('실행시키지 않고 mocking할 모듈')를 테스트 함수에 작성한다. 원래 views.py의 requests.get 을 사용하는데 그에 대한 결과값을 mocking해서 설정해야한다. 해당 값을 생성하는 것이 FakeKakao이다. 그 후 mocked_request.get이 requests.get을 대체하고 그 return_value를 Fakekakao의 결과값으로 대체하고 있다.