tdd란 테스트 주도 개발을 의미한다. 유튜브를 보고 어떤건지 알았지만 프로젝트를 진행하면서 테스트코드를 작성하고싶어졌고
당장 테스트코드를 작성하고 개발하지는 못하지만 테스트코드로 디버깅효율을 높이고 테스트 코드를 작성했다.
공식문서를 참고하여 작성
https://www.django-rest-framework.org/api-guide/testing/
경매물품을 등록하는데 사진이 필요했다 임시파일을 만들어서 게시글 등록에 사용했다.
class GoodsCreateTest(APITestCase):
"""
goods 등록
"""
@classmethod
def setUpTestData(cls):
cls.user_data={'phone':'010','username':'test','password':'!1testtest'}
cls.user=User.objects.create_user('010','test','!1testtest')
cls.goods_data={
"title":"test",
"content":"test",
"category":"기타",
"predict_price":"15000",
"start_price":"10000",
"start_date":"2022-12-25",
"start_time":"11:59"
}
def setUp(self):
self.access_token=self.client.post(reverse('token_obtain'), self.user_data).data['access']
def test_create_goods(self):
response = self.client.post(
path=reverse("goods_view"),
data=self.goods_data,
HTTP_AUTHORIZATION=f"Bearer {self.access_token}"
)
self.assertEqual(response.status_code,201)
def test_create_goods_with_image(self):
# 임시 이미지파일 생성
temp_file=tempfile.NamedTemporaryFile() # 파이썬 임시파일 만듬
temp_file.name="image.png"
image_file=get_temporary_image(temp_file)
image_file.seek(0)
self.goods_data["images"]=image_file
# 전송
response=self.client.post(
path=reverse("goods_view"),
data=encode_multipart(data=self.goods_data,boundary=BOUNDARY), #굿즈 데이터에 이미지 추가
content_type=MULTIPART_CONTENT,
HTTP_AUTHORIZATION=f"Bearer {self.access_token}"
)
self.assertEqual(response.status_code,201)
def get_temporary_image(temp_file):
size=(1,1)
color=(255,0,0,0)
images=Image.new("RGBA",size,color)
images.save(temp_file,'png')
return temp_file
'Programming > 기술 실험, 공부' 카테고리의 다른 글
자료구조 | heap (0) | 2023.01.04 |
---|---|
쿠키 | 활용해서 조회수 제한하기 | 세션과 쿠키의 차이점 (0) | 2023.01.03 |
테스트코드 | review | ValueError (0) | 2022.12.26 |
Django Channels | 개념 | 사용이유 (0) | 2022.12.23 |
XSS | 백엔드 | 시리얼라이저에서 XSS 막아보기 (0) | 2022.12.22 |