UnitTest! - 2

sh_awtylol4·2022년 4월 24일
0

wecode 31기

목록 보기
24/24
post-thumbnail

이 유닛테스트는 운이 좋게 여기저기에서 발취한 자료들을 토대로 만든 프랑켄슈타인 코드이다. 멘토님에게도 별다른 코멘트 없이 통과가 되었고 지금 돌아보니 가장 기본적인 유닛테스트의 구조를 다 갖추고 있는것 같다. 하지만 아직 다루지 블로그에서 다루지 않은 patch와 mock이 등장한다.

class HostingViewTest(TransactionTestCase):
    def setUp(self):
        User.objects.create(
            id          = 1,
            kakao_id    = 1,
            is_host     = False,
            is_adult    = True,
            email       = 'plz8282@success.com',
            nick_name   = 'successboy',
            birth_date  = '2000-01-01'
        )
        
        StayType.objects.create(
            id              = 1,
            name            = '호텔'
        )
        
        Service.objects.create(
            id              = 1,
            name            = '조식'
        )
        
        Service.objects.create(
            id              = 2,
            name            = '일식'
        )
        
        Service.objects.create(
            id              = 3,
            name            = '양식'
        )
        
        Amenity.objects.create(
            id              = 1,
            name            = 'wifi'
        )
        
        Amenity.objects.create(
            id              = 2,
            name            = '드라이기'
        )
        
        Amenity.objects.create(
            id              = 3,
            name            = '커피포트'
        )
        
        Highlight.objects.create(
            id              = 1,
            name            = '스타일리쉬'
        )
        
    def tearDown(self):
        User.objects.all().delete()
        Stay.objects.all().delete()
        StayType.objects.all().delete()
        StayImage.objects.all().delete()
        Service.objects.all().delete()
        StayService.objects.all().delete()
        Amenity.objects.all().delete()
        StayAmenity.objects.all().delete()
        Highlight.objects.all().delete()
        StayHighlight.objects.all().delete()
    
    @patch.object(HostingView, 'image_upload')
    def test_hosting_success(self, mocked_image_upload):
        mocked_image_upload.return_value = 'test uuid'
        test_token = jwt.encode({'user_id' : 1}, settings.SECRET_KEY, settings.ALGORITHM)


        test1 = SimpleUploadedFile(
            name    = 'test1.jpg',
            content = b'file_content',
            content_type= 'image/jpg'
        )

        test2 = SimpleUploadedFile(
            name    = 'test2.jpg',
            content = b'file_content',
            content_type= 'image/jpg'
        )

        test3 = SimpleUploadedFile(
            name    = 'test3.jpg',
            content = b'file_content',
            content_type= 'image/jpg'
        )
        
        headers = {'HTTP_Authorization': test_token, 'content-type' : 'multipart/form-data'}
        body = {'title'         : '테스트호텔',
                'price'         : '110000.00',
                'bed'           : 2,
                'bedRoom'       : 2, 
                'bathRoom'      : 2,
                'maxAdult'      : 2, 
                'maxKid'        : 2, 
                'maxPet'        : 2, 
                'stayTypeID'    : 1, 
                'description'   : '세상에서 가장 따듯한 호텔',
                'address'       : '테스트 나라',
                'latitude'      : 11.0000011111222,
                'longitude'     : 11.0000011111222,
                'services'      : [1, 2, 3],
                'amenties'      : [1, 2, 3],
                'highlights'    : [1],
                'image'         : [test1, test2, test3]
                }
        

        response = client.post('/stays/hosting', body, **headers)
        
        self.assertEqual(response.json(), {'message' : 'SUCCESS'})
        self.assertEqual(response.status_code, 200)
profile
포기하는 그 순간이 바로 시합종료예요...

0개의 댓글