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 |