UnitTest
12702 ワード
Pythonでは、モジュールunittestを統合することで、他のライブラリを必要とせずにユニットテストを簡単に作成できます.
ユニットテストモジュール
ユニットテストモジュール
unittestモジュールは、JavaのJUnit、JavaScriptのjest、Mochaなどのユニットテストフレームワークです.ただし、他の言語と異なり、デフォルトでは言語に組み込まれているため、Pythonのみをインストールする場合はモジュールを直接ロードして使用することができます(import).
TestCaseクラス
ユニットテストモジュールのTestCaseクラスは、ユニットテストのためのさまざまなユーティリティメソッドを提供します.したがって、新しいテストを作成するときは、まずTestCaseクラスを継承するクラスを作成する必要があります.その後、テストを実行するロジックをメソッドとしてクラスに追加できます.
たとえば、プラス1と2が3であるかどうかを確認するために、次のテストを作成できます.
テストメソッドの名前はtestで始まる必要があります.これにより、テストを実行するときにメソッドが失われず、テストケースとみなされます.
テストの実行
作成したテストを端末で簡単に実行できます.
テストに失敗しました
Assetionメソッド
unittestモジュールのTestCaseクラスは、assertEqualではなくassertで始まる多くの方法を提供します.一般的な方法の1つを使用して、他のテストを作成しました.
これに基づいて、ユニットテストを作成しました.from django.test import Client, TestCase
from .models import MainCategory, Drink, SubCategory, Image, Size, Nutrition
class DrinkListTest(TestCase):
def tearDown(self):
MainCategory.objects.all().delete()
Drink.objects.all().delete()
SubCategory.objects.all().delete()
Image.objects.all().delete()
Size.objects.all().delete()
Nutrition.objects.all().delete()
class DrinkListTest(TestCase):
maxDiff = None
def setUp(self):
self.client = Client()
self.category = MainCategory.objects.create(name="음료")
self.coldbrew = SubCategory.objects.create(name="콜드브루", description="우리 사랑하자", main_category=self.category)
self.brudcoffee = SubCategory.objects.create(name="브루드 커피", description="더 사랑하자", main_category=self.category)
self.size_1 = Size.objects.create(name="Tall(톨)")
self.size_2 = Size.objects.create(name="regular(레귤러)")
self.nitro = Drink.objects.create(sub_category = self.coldbrew,
korean_name = "나이트로 바닐라 크림",
english_name = "Nitro Vanilla Cream",
main_description = "사랑해",
sub_description = "더 사랑해",
destiny = 10,
is_new = True,
is_season = False,
price = 1000)
self.icecoffee = Drink.objects.create(sub_category = self.brudcoffee,
korean_name = "아이스 커피",
english_name = "Iced Coffee",
main_description = "사랑해",
sub_description = "더 사랑해",
destiny = 15,
is_new = False,
is_season = False,
price = 3500)
self.nutrition = Nutrition.objects.create(drink = self.nitro,
size = self.size_1,
kcal = 10,
sodium = 15,
saturation= 20,
sugar = 25,
protein = 30,
caffeine = 35
)
self.nutrition = Nutrition.objects.create(drink = self.nitro,
size = self.size_2,
kcal = 20,
sodium = 30,
saturation= 40,
sugar = 50,
protein = 60,
caffeine = 70
)
self.nutrition = Nutrition.objects.create(drink = self.icecoffee,
size = self.size_1,
kcal = 100,
sodium = 150,
saturation= 200,
sugar = 250,
protein = 300,
caffeine = 350
)
self.nutrition = Nutrition.objects.create(drink = self.icecoffee,
size = self.size_2,
kcal = 200,
sodium = 300,
saturation= 400,
sugar = 500,
protein = 600,
caffeine = 700
)
self.image = Image.objects.create(image_url ="drink_image_url",
drink = self.icecoffee
)
self.image = Image.objects.create(image_url ="drink_image_url",
drink = self.nitro
)
def test_product_list_get_success(self):
response = self.client.get('/product')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json(),
{
'results':
[
{
'subcategory_id': 3,
'name': '콜드브루',
'description': '우리 사랑하자',
'products':
[
{
'id': 3,
'isnew': True,
'isseason': False,
'name': '나이트로 바닐라 크림',
'image': 'drink_image_url',
'kcal': 10,
'sodium': 15,
'saturation': 20,
'sugar': 25,
'protein': 30,
'caffeine': 35
}
]
},
{
'subcategory_id': 4,
'name': '브루드 커피',
'description': '더 사랑하자',
'products': [
{
'id': 4,
'isnew': False,
'isseason': False,
'name': '아이스 커피',
'image': 'drink_image_url',
'kcal': 100,
'sodium': 150,
'saturation': 200,
'sugar': 250,
'protein': 300,
'caffeine': 350
}
]
}
]
}
)
def test_product_list_get_filter_success(self):
name = "콜드브루"
response = self.client.get(f'/product?name={name}')
self.assertEqual(response.status_code, 200)
print(response.json())
self.assertEqual(response.json(),
{
'results': [
{
'subcategory_id': 1,
'name': '콜드브루',
'description': '우리 사랑하자',
'products': [
{
'id': 1,
'isnew': True,
'isseason': False,
'name': '나이트로 바닐라 크림',
'image': 'drink_image_url',
'kcal': 10,
'sodium': 15,
'saturation': 20,
'sugar': 25,
'protein': 30,
'caffeine': 35
}
]
}
]
}
)
Reference
この問題について(UnitTest), 我々は、より多くの情報をここで見つけました
https://velog.io/@xchdtk/UnitTest
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
ユニットテストモジュールのTestCaseクラスは、ユニットテストのためのさまざまなユーティリティメソッドを提供します.したがって、新しいテストを作成するときは、まずTestCaseクラスを継承するクラスを作成する必要があります.その後、テストを実行するロジックをメソッドとしてクラスに追加できます.
たとえば、プラス1と2が3であるかどうかを確認するために、次のテストを作成できます.
テストメソッドの名前はtestで始まる必要があります.これにより、テストを実行するときにメソッドが失われず、テストケースとみなされます.
テストの実行
作成したテストを端末で簡単に実行できます.
テストに失敗しました
Assetionメソッド
unittestモジュールのTestCaseクラスは、assertEqualではなくassertで始まる多くの方法を提供します.一般的な方法の1つを使用して、他のテストを作成しました.
これに基づいて、ユニットテストを作成しました.from django.test import Client, TestCase
from .models import MainCategory, Drink, SubCategory, Image, Size, Nutrition
class DrinkListTest(TestCase):
def tearDown(self):
MainCategory.objects.all().delete()
Drink.objects.all().delete()
SubCategory.objects.all().delete()
Image.objects.all().delete()
Size.objects.all().delete()
Nutrition.objects.all().delete()
class DrinkListTest(TestCase):
maxDiff = None
def setUp(self):
self.client = Client()
self.category = MainCategory.objects.create(name="음료")
self.coldbrew = SubCategory.objects.create(name="콜드브루", description="우리 사랑하자", main_category=self.category)
self.brudcoffee = SubCategory.objects.create(name="브루드 커피", description="더 사랑하자", main_category=self.category)
self.size_1 = Size.objects.create(name="Tall(톨)")
self.size_2 = Size.objects.create(name="regular(레귤러)")
self.nitro = Drink.objects.create(sub_category = self.coldbrew,
korean_name = "나이트로 바닐라 크림",
english_name = "Nitro Vanilla Cream",
main_description = "사랑해",
sub_description = "더 사랑해",
destiny = 10,
is_new = True,
is_season = False,
price = 1000)
self.icecoffee = Drink.objects.create(sub_category = self.brudcoffee,
korean_name = "아이스 커피",
english_name = "Iced Coffee",
main_description = "사랑해",
sub_description = "더 사랑해",
destiny = 15,
is_new = False,
is_season = False,
price = 3500)
self.nutrition = Nutrition.objects.create(drink = self.nitro,
size = self.size_1,
kcal = 10,
sodium = 15,
saturation= 20,
sugar = 25,
protein = 30,
caffeine = 35
)
self.nutrition = Nutrition.objects.create(drink = self.nitro,
size = self.size_2,
kcal = 20,
sodium = 30,
saturation= 40,
sugar = 50,
protein = 60,
caffeine = 70
)
self.nutrition = Nutrition.objects.create(drink = self.icecoffee,
size = self.size_1,
kcal = 100,
sodium = 150,
saturation= 200,
sugar = 250,
protein = 300,
caffeine = 350
)
self.nutrition = Nutrition.objects.create(drink = self.icecoffee,
size = self.size_2,
kcal = 200,
sodium = 300,
saturation= 400,
sugar = 500,
protein = 600,
caffeine = 700
)
self.image = Image.objects.create(image_url ="drink_image_url",
drink = self.icecoffee
)
self.image = Image.objects.create(image_url ="drink_image_url",
drink = self.nitro
)
def test_product_list_get_success(self):
response = self.client.get('/product')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json(),
{
'results':
[
{
'subcategory_id': 3,
'name': '콜드브루',
'description': '우리 사랑하자',
'products':
[
{
'id': 3,
'isnew': True,
'isseason': False,
'name': '나이트로 바닐라 크림',
'image': 'drink_image_url',
'kcal': 10,
'sodium': 15,
'saturation': 20,
'sugar': 25,
'protein': 30,
'caffeine': 35
}
]
},
{
'subcategory_id': 4,
'name': '브루드 커피',
'description': '더 사랑하자',
'products': [
{
'id': 4,
'isnew': False,
'isseason': False,
'name': '아이스 커피',
'image': 'drink_image_url',
'kcal': 100,
'sodium': 150,
'saturation': 200,
'sugar': 250,
'protein': 300,
'caffeine': 350
}
]
}
]
}
)
def test_product_list_get_filter_success(self):
name = "콜드브루"
response = self.client.get(f'/product?name={name}')
self.assertEqual(response.status_code, 200)
print(response.json())
self.assertEqual(response.json(),
{
'results': [
{
'subcategory_id': 1,
'name': '콜드브루',
'description': '우리 사랑하자',
'products': [
{
'id': 1,
'isnew': True,
'isseason': False,
'name': '나이트로 바닐라 크림',
'image': 'drink_image_url',
'kcal': 10,
'sodium': 15,
'saturation': 20,
'sugar': 25,
'protein': 30,
'caffeine': 35
}
]
}
]
}
)
Reference
この問題について(UnitTest), 我々は、より多くの情報をここで見つけました
https://velog.io/@xchdtk/UnitTest
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Assetionメソッド
unittestモジュールのTestCaseクラスは、assertEqualではなくassertで始まる多くの方法を提供します.一般的な方法の1つを使用して、他のテストを作成しました.
これに基づいて、ユニットテストを作成しました.from django.test import Client, TestCase
from .models import MainCategory, Drink, SubCategory, Image, Size, Nutrition
class DrinkListTest(TestCase):
def tearDown(self):
MainCategory.objects.all().delete()
Drink.objects.all().delete()
SubCategory.objects.all().delete()
Image.objects.all().delete()
Size.objects.all().delete()
Nutrition.objects.all().delete()
class DrinkListTest(TestCase):
maxDiff = None
def setUp(self):
self.client = Client()
self.category = MainCategory.objects.create(name="음료")
self.coldbrew = SubCategory.objects.create(name="콜드브루", description="우리 사랑하자", main_category=self.category)
self.brudcoffee = SubCategory.objects.create(name="브루드 커피", description="더 사랑하자", main_category=self.category)
self.size_1 = Size.objects.create(name="Tall(톨)")
self.size_2 = Size.objects.create(name="regular(레귤러)")
self.nitro = Drink.objects.create(sub_category = self.coldbrew,
korean_name = "나이트로 바닐라 크림",
english_name = "Nitro Vanilla Cream",
main_description = "사랑해",
sub_description = "더 사랑해",
destiny = 10,
is_new = True,
is_season = False,
price = 1000)
self.icecoffee = Drink.objects.create(sub_category = self.brudcoffee,
korean_name = "아이스 커피",
english_name = "Iced Coffee",
main_description = "사랑해",
sub_description = "더 사랑해",
destiny = 15,
is_new = False,
is_season = False,
price = 3500)
self.nutrition = Nutrition.objects.create(drink = self.nitro,
size = self.size_1,
kcal = 10,
sodium = 15,
saturation= 20,
sugar = 25,
protein = 30,
caffeine = 35
)
self.nutrition = Nutrition.objects.create(drink = self.nitro,
size = self.size_2,
kcal = 20,
sodium = 30,
saturation= 40,
sugar = 50,
protein = 60,
caffeine = 70
)
self.nutrition = Nutrition.objects.create(drink = self.icecoffee,
size = self.size_1,
kcal = 100,
sodium = 150,
saturation= 200,
sugar = 250,
protein = 300,
caffeine = 350
)
self.nutrition = Nutrition.objects.create(drink = self.icecoffee,
size = self.size_2,
kcal = 200,
sodium = 300,
saturation= 400,
sugar = 500,
protein = 600,
caffeine = 700
)
self.image = Image.objects.create(image_url ="drink_image_url",
drink = self.icecoffee
)
self.image = Image.objects.create(image_url ="drink_image_url",
drink = self.nitro
)
def test_product_list_get_success(self):
response = self.client.get('/product')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json(),
{
'results':
[
{
'subcategory_id': 3,
'name': '콜드브루',
'description': '우리 사랑하자',
'products':
[
{
'id': 3,
'isnew': True,
'isseason': False,
'name': '나이트로 바닐라 크림',
'image': 'drink_image_url',
'kcal': 10,
'sodium': 15,
'saturation': 20,
'sugar': 25,
'protein': 30,
'caffeine': 35
}
]
},
{
'subcategory_id': 4,
'name': '브루드 커피',
'description': '더 사랑하자',
'products': [
{
'id': 4,
'isnew': False,
'isseason': False,
'name': '아이스 커피',
'image': 'drink_image_url',
'kcal': 100,
'sodium': 150,
'saturation': 200,
'sugar': 250,
'protein': 300,
'caffeine': 350
}
]
}
]
}
)
def test_product_list_get_filter_success(self):
name = "콜드브루"
response = self.client.get(f'/product?name={name}')
self.assertEqual(response.status_code, 200)
print(response.json())
self.assertEqual(response.json(),
{
'results': [
{
'subcategory_id': 1,
'name': '콜드브루',
'description': '우리 사랑하자',
'products': [
{
'id': 1,
'isnew': True,
'isseason': False,
'name': '나이트로 바닐라 크림',
'image': 'drink_image_url',
'kcal': 10,
'sodium': 15,
'saturation': 20,
'sugar': 25,
'protein': 30,
'caffeine': 35
}
]
}
]
}
)
Reference
この問題について(UnitTest), 我々は、より多くの情報をここで見つけました
https://velog.io/@xchdtk/UnitTest
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
from django.test import Client, TestCase
from .models import MainCategory, Drink, SubCategory, Image, Size, Nutrition
class DrinkListTest(TestCase):
def tearDown(self):
MainCategory.objects.all().delete()
Drink.objects.all().delete()
SubCategory.objects.all().delete()
Image.objects.all().delete()
Size.objects.all().delete()
Nutrition.objects.all().delete()
class DrinkListTest(TestCase):
maxDiff = None
def setUp(self):
self.client = Client()
self.category = MainCategory.objects.create(name="음료")
self.coldbrew = SubCategory.objects.create(name="콜드브루", description="우리 사랑하자", main_category=self.category)
self.brudcoffee = SubCategory.objects.create(name="브루드 커피", description="더 사랑하자", main_category=self.category)
self.size_1 = Size.objects.create(name="Tall(톨)")
self.size_2 = Size.objects.create(name="regular(레귤러)")
self.nitro = Drink.objects.create(sub_category = self.coldbrew,
korean_name = "나이트로 바닐라 크림",
english_name = "Nitro Vanilla Cream",
main_description = "사랑해",
sub_description = "더 사랑해",
destiny = 10,
is_new = True,
is_season = False,
price = 1000)
self.icecoffee = Drink.objects.create(sub_category = self.brudcoffee,
korean_name = "아이스 커피",
english_name = "Iced Coffee",
main_description = "사랑해",
sub_description = "더 사랑해",
destiny = 15,
is_new = False,
is_season = False,
price = 3500)
self.nutrition = Nutrition.objects.create(drink = self.nitro,
size = self.size_1,
kcal = 10,
sodium = 15,
saturation= 20,
sugar = 25,
protein = 30,
caffeine = 35
)
self.nutrition = Nutrition.objects.create(drink = self.nitro,
size = self.size_2,
kcal = 20,
sodium = 30,
saturation= 40,
sugar = 50,
protein = 60,
caffeine = 70
)
self.nutrition = Nutrition.objects.create(drink = self.icecoffee,
size = self.size_1,
kcal = 100,
sodium = 150,
saturation= 200,
sugar = 250,
protein = 300,
caffeine = 350
)
self.nutrition = Nutrition.objects.create(drink = self.icecoffee,
size = self.size_2,
kcal = 200,
sodium = 300,
saturation= 400,
sugar = 500,
protein = 600,
caffeine = 700
)
self.image = Image.objects.create(image_url ="drink_image_url",
drink = self.icecoffee
)
self.image = Image.objects.create(image_url ="drink_image_url",
drink = self.nitro
)
def test_product_list_get_success(self):
response = self.client.get('/product')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json(),
{
'results':
[
{
'subcategory_id': 3,
'name': '콜드브루',
'description': '우리 사랑하자',
'products':
[
{
'id': 3,
'isnew': True,
'isseason': False,
'name': '나이트로 바닐라 크림',
'image': 'drink_image_url',
'kcal': 10,
'sodium': 15,
'saturation': 20,
'sugar': 25,
'protein': 30,
'caffeine': 35
}
]
},
{
'subcategory_id': 4,
'name': '브루드 커피',
'description': '더 사랑하자',
'products': [
{
'id': 4,
'isnew': False,
'isseason': False,
'name': '아이스 커피',
'image': 'drink_image_url',
'kcal': 100,
'sodium': 150,
'saturation': 200,
'sugar': 250,
'protein': 300,
'caffeine': 350
}
]
}
]
}
)
def test_product_list_get_filter_success(self):
name = "콜드브루"
response = self.client.get(f'/product?name={name}')
self.assertEqual(response.status_code, 200)
print(response.json())
self.assertEqual(response.json(),
{
'results': [
{
'subcategory_id': 1,
'name': '콜드브루',
'description': '우리 사랑하자',
'products': [
{
'id': 1,
'isnew': True,
'isseason': False,
'name': '나이트로 바닐라 크림',
'image': 'drink_image_url',
'kcal': 10,
'sodium': 15,
'saturation': 20,
'sugar': 25,
'protein': 30,
'caffeine': 35
}
]
}
]
}
)
Reference
この問題について(UnitTest), 我々は、より多くの情報をここで見つけました https://velog.io/@xchdtk/UnitTestテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol