https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Testing
# articles/test.py
from django.urls import reverse
from rest_framework.test import APITestCase
from rest_framework import status
from users.models import User
class ArticleCreateTest(APITestCase):
def setUp(self): # 우선 '작성'까지만.
# 회원가입
self.user_data = {'email':'hp@gmail.com', 'password':'hp'}
self.article_data = {'title':'Happy', 'content':"I'm happy"}
self.user = User.objects.create_user('hp@gmail.com', 'hp')
self.access_token = self.client.post(reverse('token_obtain_pair'), self.user_data).data['access']
# user_data를 보내서post, 받아온 것의 data의 access 키를 받아온 것이 access_token이다.
이하로 많은 테스트를 만드는데, 실행할 때마다 매번 setUp
도 실행하게 된다.
setUp을 매번 하지 않고 1번만 하고 모든 테스트를 쓸 수 있는 방법이 있다.
# articles/test.py
from django.urls import reverse
from rest_framework.test import APITestCase
from rest_framework import status
from users.models import User
class ArticleCreateTest(APITestCase):
# setUp을 classmethod 사용해서 바꿔보기
@classmethod
def setUpTestData(cls): # cls로 써주는 게 컨벤션
cls.user_data = {'email':'hp@gmail.com', 'password':'hp'}
# 클래스의 attribute로 들어가게 되어, 밑에 있는 인스턴스들도 갖게 된다.
cls.article_data = {'title':'Happy', 'content':"I'm happy"}
cls.user = User.objects.create_user('hp@gmail.com', 'hp')
def setUp(self):
self.access_token = self.client.post(reverse('token_obtain_pair'), self.user_data).data['access']
# 각 method를 실행할 때 토큰을 받아오는 식으로 하게 된다.