TIL31 unit Test 로직 및 터미널 보기
세션을 듣고 직접 유닛테스트를 test.py에 작성해보았다.
직접 Post 테스트 케이스를 만들어서 해보려고하닌 많은 어려움이 있었다.
처음에는 어떻게 작성해야할지 감을 잡지못해서 이거저거 해보면서 서서히 감을 잡게되었는데
작성할떄 models.py 필드잘참조해서 값을 만들어야하는것이 핵심이다. 여기서 조금 해매었다.
테스트케이스를 작성하기위해서는
from django.test import TestCase, Client
이와같이 import를 필히 해주어야 한다. 그런다음에 TestCase
를 사용할 곳에 상속받게해서 사용하게 해주면된다.
내가 작성한 성공 실패 오류에 관해서 각각 메소드를 만들어 줘야한다.
나는 TestCase 아래와같이 작성하였다.
import json
from django.test import TestCase, Client
from. models import Order
from users.models import Expert, Position, SellerInfo, User
from products.models import Category, Product
class OrderTest(TestCase):
def setUp(self):
category=Category.objects.create(
id = 1,
name ='python')
user=User.objects.create(
id = 1,
is_kakao = 1,
email = '[email protected]',
image = 'kskejsldadlwe',
is_deleted = 0,
identifier = 1
)
position=Position.objects.create(
id = 1,
name ='백엔드')
seller_Info=SellerInfo.objects.create(
email = '[email protected]',
address ='선릉대로427',
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()
response = client.post('/orders',json.dumps({
"email" : "[email protected]",
"product_id": 3000000,
"price" : 4300
}), content_type='application/json')
self.assertEqual(response.status_code, 400)
self.assertEqual(response.json(),{'message':'INVALID_PRODUCT'})
def test_orderview_post_success(self):
client = Client()
response = client.post('/orders',json.dumps({
"email" : "[email protected]",
"product_id": 1,
"price" : 4300
}), content_type='application/json')
self.assertEqual(response.status_code, 201)
self.assertEqual(response.json(),{'message':'SUCCESS'})
def test_orderview_post_keyerror(self):
client = Client()
response = client.post('/orders',json.dumps({
"product_id": 1,
"price" : 4300
}), content_type='application/json')
self.assertEqual(response.status_code, 400)
self.assertEqual(response.json(),{'message':'KEY_ERROR'})
터미널에서 python manage.py test .
를 실행하면 함수메소드를 3개만들었기때문에 로직대로 구현되면
아래와 같이 뜬다.
유닛테스트 하고나니 테스트하는 업무도 상당히 흥미롭다. 흥미롭기까지 과정이 고난했지만 기쁘다.
Author And Source
이 문제에 관하여(TIL31 unit Test 로직 및 터미널 보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@chp0510/unit-Test-로직-및-터미널-보기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)