DRF를 이용해서 API를 만들었다면 테스트 과정이 필수적이다.
해당 강의 이전에는 수동으로 데이터를 전송해서 POST, DELETE, PUT, GET 메소드가 정상적으로 실행되는지 확인했다.
이렇게 하면 몇 테스트는 하지 않는 실수가 발생할 수 있다. 때문에 django를 이용해 test를 해야 안전하다.
각 앱마다 tests.py 파일을 만들어 안에 작성했다.
from rest_framework.test import APITestCase
모든 테스트 클래스는 APITestCase의 확장이다.
django에서 하나의 명령어로 자동 테스트를 진행하기 위해서는 APITestCase Class의 method명명 규칙을 숙지해야 한다.
python manage.py test
class TestCalculation(APITestCase):
def test_two_plus_two(self):
self.assertEqual(2+2, 5, "wrong")

self.client는 API로 get / put / post / delete request를 보낼 수 있게 도와준다.
class TestGet(APITestCase):
def test_get(self):
response = self.client.get("get요청을 보낼 path")
print(response.json())
response.json()을 출력해보면 empty list가 반환될 것이다.
setUp메소드는 다른 test들이 실행되기 전에 실행된다. 여기서 테스트 데이터를 생성하는 작업 등을 하면 된다.
from rest_framework import APITestCase
from . import models
class TestClass(APITestCase):
def setUp(self):
models.ModelName.objects.create(
name="testName"
description="testDesc"
)
def test_setup(self):
response = self.client.get("해당path")
print(response.json())
출력해보면 setUp에서 만든 데이터가 반환될 것이다.
테스트의 목적은 잘 작동하는지, 잘못된 경우 제대로 오류가 표시되는지 확인하는 것이기에 의도적으로 잘못된 데이터를 전송해서도 테스트를 해야 한다.
docs
https://docs.djangoproject.com/en/5.0/topics/testing/overview/