📕 Unit Test


djangoでプロジェクトまたはアプリケーションを作成する場合はtest.pyという名前のファイルが生成されます.このファイルはユニットをテストするためのファイルです.

ユニットテストとは?


これは関数をテストする方法で、私がコードを書く最小単位です.

コードをテストする方法には、上記の3つがあります.

UI Tests

  • ページがある場合、ページのすべての機能をテストします.
  • 検索
  • 、検索結果が正しいかどうか、画面に良好に表示されているかどうか、会員登録など、
  • Integration Tests

  • 少なくとも2つ以上のクラスまたはサブシステムの結合をテストする方法
  • .

    Unit Tests

  • 最低コスト>ユニットテストは、
  • のため、スクリプトで自動的に実行されます.
    商品リストビューで作成した内容を基にユニットテストを行った.
    # views
    
    class Allproducts(View):
        def get(self,request):
            product_all = Product.objects.all()
            product_list = [{
                'id'               : product.id,
                'category'         : product.category,
                'name'             : product.name,
                'heart_count'      : product.heart_count,
                'like'             : product.like,
                'retail_price'     : product.retail_price,
                'discount_percent' : product.discount_percent,
                'monthly_pay'      : product.monthly_pay,
                'monthly_payment'  : product.monthly_payment,
            } for product in product_all]
    
            return JsonResponse({'data':product_list}, status=200)
    上のコードは、商品リスト全体を読み込んだビューです.
    テスト.pyに書いたら、
    # test.py
    
    import json
    from django.test import TestCase, Client
    
    from .models import Product
    
    client = Client()
    class AllproductsTest(TestCase):
        def setUp(self):
            Product.objects.create(
                id               = 1,
                category         = '여행',
                name             = '여행을 떠나는 클래스',
                heart_count      = 100,
                like             = 900000,
                retail_price     = 900000.0,
                discount_percent = 50,
                monthly_pay      = 5,
                monthly_payment  = 10000,
            )
        def tearDown(self):
            Product.objects.all().delete()
    
        def test_Allproducts_get_success(self):
            client = Client()
            
    # get 뒤에는 urls에 설정한 경로다
            response = client.get('/products')
            self.assertEqual(response.json(),
                {
                "data": [{
                "id": 1,
                "category": "여행",
                "name": "여행을 떠나는 클래스",
                "heart_count": 100,
                "like": 900000,
                "retail_price" : 900000.0,
                "discount_percent": 50.0,
                "monthly_pay": 5.0,
                "monthly_payment": 10000
            }]
                }
            )
            self.assertEqual(response.status_code, 200)
    実際のデータを含むコードおよび再削除されたコードProduct.objects.all().delete()加えて、test_Allproducts_get_success関数で、正常に動作しているかどうかを返します.
    異常がなければOKが出ます.

    ソース:以上のコードセッションリンク