유닛테스트

chp9419·2021년 7월 4일
0

저번에 유닛테스트작성한 한적이 있다.

이번에 작성한 유닛테스트는 소셜로그인 한상태에서 결제기능 유닛테스트를 코드를 작성해보았다.

class OrderTest(TestCase):
    def setUp(self):
        category=Category.objects.create(
            id         = 1,
            name       ='python')
        user=User.objects.create(
            id         = 1,
            is_kakao   = 1,
            email      = 'a@naver.com',
            image      = 'kskejsldadlwe',
            is_deleted = 0,
            identifier = 1
        ) 

        self.token = jwt.encode({'user_id' :User.objects.get(id=user.id).id}, SECRET_KEY, algorithm = ALGORITHM)
        position   = Position.objects.create(
            id     = 1,
            name   ='백엔드')

        seller_Info=SellerInfo.objects.create(
            email        = 'a@naver.com',
            address      ='선릉대로437',
            phone_number = 0
        )
        expert=Expert.objects.create(
            id=1,
            introduction = '@@@@@@@@@@@@@@@@@@@@@@@',
            image        = '#################',
            created_at   = 0,
            name         ='김아무개',
            position     = position,
            seller_info  = seller_Info,
            user         = user
            )

        Product.objects.create(
            id         = 1,
            title      = '파이썬 20년',
            price      = 4300,
            sell_count = 1,
            category   = category,
            expert     = expert
        )
        
    def tearDown(self):
        Category.objects.all().delete()
        Expert.objects.all().delete()
        Product.objects.all().delete()
        User.objects.all().delete()
        Order.objects.all().delete()
   
   

소셜로그인 유닛테스트 작성 부분

 def test_orderview_post_invalid_product(self):
        client   = Client()
        header = {"HTTP_Authorization" : self.token} # 소셜로그인 하기위한 소스코드 추가
        response = client.post('/orders',json.dumps({
            "product_id": 2,
            "price"     : 4300
            }),**header, content_type='application/json') # **header 부문 추가
        self.assertEqual(response.status_code, 400)
        self.assertEqual(response.json(),{'message':'INVALID_PRODUCT'})
        
    def test_orderview_post_success(self):
        client   = Client()
        header = {"HTTP_Authorization" : self.token}
        response = client.post('/orders',json.dumps({
            "product_id": 1,
            "price"     : 4300
            }),**header, content_type='application/json')

        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.json(),{'message':'SUCCESS'})

    def test_orderview_post_keyerror(self):
        client   = Client()
        header = {"HTTP_Authorization" : self.token}
        response = client.post('/orders',json.dumps({
            "prodct_id": 1,
            "price"     : 4300
            }),**header, content_type='application/json')

        self.assertEqual(response.status_code, 400)
        self.assertEqual(response.json(),{'message':'KEY_ERROR'})
        

처음 header = {"HTTP_Authorization" : self.token} 이부분을 header = {"HTTP" : self.token} 이렇게하니 토큰값이 특정한 부분에서 받지 못해서 테스트 유닛에서 실패떴는데 테스트유닛을 작성할때 이부분을 잘작성한다면 문제가 일어나지 않을것으로 보인다.

profile
주어진 문제는 해결하고 공부하고 성장한다.

0개의 댓글