본문 바로가기

장고(DJango)

[DRF] 테스트 케이스 (test case)

django 테스트 케이스와 비슷하다.

api 테스트를 돕는다.

 

from rest_framework import status
from rest_framework.test import APITestCase
from django.urls import reverse


class LocationTestCase(APITestCase):
    def setUp(self):
        self.test_url = reverse('location')

    def test_status(self):
        data = {
            'lon': 126.9784039920235,
            'lat': 37.566627074987274,
            'limit': 1,
            'user_id': "asdf"
        }
        response = self.client.get(self.test_url, data=data)
        print(response.status_code)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

APITestCase를 상속받아 테스트를 위한 클래스를 하나 생성한다.

setUp()은 오버라이드한 함수로, 초기 공통 설정을 해줄 수 있다.

reverse()는 urls.py에서 설정한 경로 이름을 넣으면 자동으로 해당 경로를 가져오는 역할을 한다.

아래 test_status()는 사용자가 직접 정의한 함수로 실제 테스트에 사용된다.

나는 데이터를 임의로 만들어 get방식으로 urld을 호출하였고, get방식에서 data는 쿼리 형태로 들어간다.

self.assertEqual(response.status_code, status.HTTP_201_CREATED)

이 부분은 내가 예상한 응답과 실제 응답이 같은지 확인하는 부분이다. 만약 같다면 테스트는 통과이고 틀리면 error라고 나온다.

 

실행 방법은

python manage.py test

python manage.py test [앱이름]

등등.. 이 존재한다.

 

테스트 성공!

 

테스트 실패...