Back-end/Django
APITestCase와 APIClient를 활용한 Django Rest Framework 단위 테스트 코드 작성
sw_develop
2022. 2. 5. 23:44
사이드 프로젝트의 단위 테스트를 작성하며 알게된 내용을 정리하였다.
#️⃣ APIClient를 사용해 Request 생성 시 header 추가하기
response = self.client.post(
path=url,
HTTP_{Header 이름}={값})
위와 같이 인자로 맨 앞에 HTTP_ 붙여 전달해주면 된다.
참고) Stack Overflow - API Client Custom Header
#️⃣ reverse() 사용 시 url path 변수 값 설정하기
# 아래 2개는 동일한 표현임
url = "/account/<int:pk>/userInfo"
url = reverse(viewname="{django app 이름}:{urlpatterns 등록 시 설정한 name}", args=[self.user_id])
위와 같이 reverse()의 args 인자로 path 변수 값을 설정할 수 있다.
이때 args에는 여러 값을 전달할 수 있도록 iterable 해야 하므로, []로 감싸 list 타입으로 전달해야 한다.
참고) Stack Overflow - must be an iterable, not int
#️⃣ APIClient에 Token Authentication 설정하기
self.client.credentials(HTTP_AUTHORIZATION="Bearer " + self.access_token)
APITestCase를 상속한 클래스 내부의 메서드에서 self.client는 APIClient 객체이다.
위와 같이 credentials() 메서드를 사용해 Bearer Token을 설정하여 토큰 인증을 할 수 있다.