테스트는 버그가 있음을 보여줄 뿐, 버그가 없음을 보여줄 수는 없다.
- 에츠허르 비버 데이크스트라 -
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
의 결과값으로 대체하고 있다.