TIL 31ユニットテストロジックとターミナルビュー


セッションを聞いた後、ユニットを直接テストします.pyに書いてみました.
自分でPostテストボックスを作るのは難しいことが多い.
最初はどう書けばいいか分からなかったので、これをやってみて、ゆっくりと感じが見つかりました.
作成時にモデルを使用します.コアは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つの関数メソッドが作成され、論理的に実装される.
次のように浮かび上がる.

ユニットテストが終わったら、テストの仕事もかなり面白いです.過程はなかなか面白くないですが、楽しかったです.