본문으로 바로가기

tdd란 테스트 주도 개발을 의미한다. 유튜브를 보고 어떤건지 알았지만 프로젝트를 진행하면서 테스트코드를 작성하고싶어졌고

당장 테스트코드를 작성하고 개발하지는 못하지만 테스트코드로 디버깅효율을 높이고 테스트 코드를 작성했다.

공식문서를 참고하여 작성

https://www.django-rest-framework.org/api-guide/testing/

 

Testing - Django REST framework

 

www.django-rest-framework.org

경매물품을 등록하는데 사진이 필요했다 임시파일을 만들어서 게시글 등록에 사용했다.

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