DRF 5-10 setUpTestData 2가지

Grace Goh·2022년 11월 16일
0

Django Rest Framework

목록 보기
27/36

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를 실행할 때 토큰을 받아오는 식으로 하게 된다.
profile
Español, Inglés, Coreano y Python

0개의 댓글