DRF 테스트를 위한 APIClient

Posted on 2021-08-30 by GKSRUDTN99
Django Rest Framework DRF Test Driven Development

API를 테스트하기 위한 Client이다.

import rest_framework.test import APIClient를 통해 임포트한다.


get()

url과 data(URL parameter)로 GET 요청을 보낸다.

response = self.client.get(
            '/api/post/',
            {
                'post_id': self.post_test.pk
            }
        )

post()

get()과 동일하다.

response = self.client.post(
            '/api/comment/',
            {
                'user': self.user_obama.pk,
                'post_id': self.post_test.pk,
                'content': '블라블라'
            }
        )

CREATE 요청의 성공 Status Code는 201이다.


put()

url/<int:pk>/의 url에 요청을 보내야 한다. Django는 끝에 붙는 / 기호에 민감하므로 주의하자.

response = self.client.put(
            f'/api/comment/{comment_001.pk}/',
            {
                'user': self.user_obama.pk,
                'post_id': self.post_test.pk,
                'content': '다른 블라블라'
            }
        )

delete()

put()과 동일하지만, data를 함께 보낼 필요는 없다.

response = self.client.delete(
            f'/api/comment/{comment_001.pk}/'
        )

Authorization

  1. client.login()을 통해 로그인 할 수 있다.
  2. 토큰 방식을 이용하는 경우, 다음 코드를 사용한다.
self.client.credentials(HTTP_AUTHORIZATION='JWT ' + self.user_obama_token)