저번에 유닛테스트작성한 한적이 있다.
이번에 작성한 유닛테스트는 소셜로그인 한상태에서 결제기능 유닛테스트를 코드를 작성해보았다.
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} 이렇게하니 토큰값이 특정한 부분에서 받지 못해서 테스트 유닛에서 실패떴는데 테스트유닛을 작성할때 이부분을 잘작성한다면 문제가 일어나지 않을것으로 보인다.