시간낭비
복잡도 증가
허점
테스트코드
이다!테스트 주도 개발(Test Driven Develop)
python manage.py test
# user.test
from django.test import TestCase
class TestView(TestCase):
def test_two_is_three(self):
self.assertEqual(2,3)
def test_two_is_two(self):
self.assertEqual(2,2)
django.urls 라이브러리에서 reverse를 활용하여, 패스 이름을 가져옴
url이 바뀌더라도 테스트에는 지장이 없게 하기 위함
from django.urls import reverse
from rest_framework.test import APITestCase
from rest_framework import status
class UserRegistrationAPIViewTestCase(APITestCase):
def test_registration(self):
url = reverse("user_view")
user_data = {
"username" : "testuser",
"fullname" : "테스터",
"email" : "test@testuser.com",
"password" : "password",
}
response = self.client.post(url, user_data)
self.assertEqual(response.status_code, 200)
def test_login(self):
url = reverse("token_obtain_view")
user_data = {
"username" : "testuser",
"fullname" : "테스터",
"email" : "test@testuser.com",
"password" : "password",
}
response = self.client.post(url, user_data)
self.assertEqual(response.status_code, 200)
똑같은 유저를 만들었지만 로그인이 되질 않는다..?테스트코드는 독립적(Stateless)이어야만 한다!
def setUp(self):
self.data = {"username" : "john", "password": "johnpassword"}
self.user = User.objects.create_user("john", "johnpassword")
from django.urls import reverse
from rest_framework.test import APITestCase
from rest_framework import status
class LoginUserTest(APITestCase):
def setUp(self):
self.data = {"username" : "john", "password": "johnpassword"}
self.user = User.objects.create_user("john", "johnpassword")
def test_login(self):
response = self.client.post(reverse('token_obtain_pair'), self.data)
self.assertEqual(response.status_code, 200)