setUpTestData

  • setUpTestData : 생성된 데이터베이스 픽스쳐는 모든 테스트 메소드에서 사용할 수 있다.
  • setUP: 각각의 테스트 메소드가 실행되기 전에 실행되는 메소드
class ArticleCreateTest(APITestCase):
    @classmethod
    def setUpTestData(cls):
        cls.user_data = {'username':'John', 'password':'password'}
        cls.article_data = {'title':'테스트', 'content':'내용 테스트'}
        cls.user = User.objects.create_user('John', 'password')
        #토큰을 가져올 때 cls.client로 쓰면 에러남

    def setUp(self):
        self.access_token = self.client.post(reverse('token_obtain_pair'), self.user_data).data['access']

 

 

로그인 하지 않고, 로그인 하고 글작성하기

    def test_fail_if_not_logged_in(self):
        url = reverse("article_view")
        response = self.client.post(url, self.article_data)
        self.assertEqual(response.status_code, 401)
        
        
    def test_fail_if_not_logged_in(self):
        response = self.client.post(
            path=reverse("article_view"),
            data=self.article_data,
            HTTP_AUTHORIZATION = f'Bearer {self.access_token}'
        )
        self.assertEqual(response.data["message"], "글 작성 완료!!")

 

 

 

 

이미지 게시글

# 이미지 업로드 및 임시 이미지파일
from django.test.client import MULTIPART_CONTENT, encode_multipart, BOUNDARY
from PIL import Image
import tempfile

# 임시 파일을 만들어 임시 이미지를 만듬

def get_temporary_image(temp_file):
    size = (200, 200)
    color = (255, 0, 0, 0)
    image = Image.new("RGBA", size, color)
    image.save(temp_file, 'png')
    return temp_file
    
    
    
    # 얘는 article class 아래 만들어야 함
    def test_create_article_with_image(self):
        # 임시 이미지 생성
        temp_file = tempfile.NamedTemporaryFile()
        temp_file.name = 'image.png'
        image_file = get_temporary_image(temp_file)
        # 파일 포인터를 이미지 파일의 첫 번째 프레임의 시작 위치로 이동시킴
        image_file.seek(0)
        self.article_data['image'] = image_file

    
        # 이미지 전송
        response = self.client.post(
            path=reverse('article_view'),
            data=encode_multipart(data=self.article_data, boundary=BOUNDARY),
            content_type=MULTIPART_CONTENT,
            HTTP_AUTHORIZATION=f'Bearer {self.access_token}'
        )
        self.assertEqual(response.data['message'], '글 작성 완료!!')

 

 

'Python > Django' 카테고리의 다른 글

[DRF] 17. Faker  (0) 2023.04.30
[DRF] 15. setUp, @classmethod, @staticmethod  (0) 2023.04.27
[DRF] 14.5 테스트 코드 종류  (0) 2023.04.27
[DRF] 14. 테스트 코드란?  (0) 2023.04.27
[DRF] 13. 개인페이지 (Q객체, F객체)  (0) 2023.04.27

+ Recent posts