계속 postman으로 api테스트를 하다가 이번에 django를 써보면서 django rest framework로 간편하게 api 테스트를 할 수 있다는 것을 알게 되었다.
django이 TestCase처럼 drf에서 제공하는 APITestCase가 있는데, 이 모듈을 상속받아 테스트 코드를 짜보았다.
from django.urls import reverse
from rest_framework.test import APITestCase
from rest_framework.views import status
class SentimentAnalyzeTestCase(APITestCase):
def setUp(self):
self.url = reverse('sentiment')
def test_post_user_data(self):
data = {
"words": ["death", "fear", "kill", "pray", "god", "hope", "pretty"]
}
response = self.client.post(self.url, data=data, format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
위의 코드는 post 요청을 확인하는 테스트 코드이다.
참고로 url의 reverse
는 Flask의 url_for
과 동일한 역할을 하는 함수인 것 같다.
# urls.py
urlpatterns = [
path('sentiment/', views.SentimentAnalyzeView.as_view(), name='sentiment')
]
이렇게 url 경로가 있을 때, reverse('sentiment')
혹은 reverse(views.SentimentAnalyzeView)
로 접근할 수 있다.