Print("Assalom alaykum")


Test dasturlarni alohida faylga yozishni unutmang



Download 10,21 Mb.
bet52/58
Sana28.06.2022
Hajmi10,21 Mb.
#713027
1   ...   48   49   50   51   52   53   54   55   ...   58
Bog'liq
Mohirdev.uz...

Test dasturlarni alohida faylga yozishni unutmang.
setUp() METODI
Yuqoridagi misolda bitta test davomida 2 ta obyekt yaratdik, va obyektning parametrlarini qo'lda yangidan kiritdik. Agar shu yo'sinda davom etadigan bo'lsak, turli testlar uchun har gal yangi obyekt yaratishimiz, va ularning har biriga xususiyatlarni qayta-qayta kiritishimiz talab qilinadi. Buning oldini olish uchun test klassimizning boshida setUp() metodini yaratib, bu metod ichida barcha kerakli qiymatlarni va obyektlarni saqlab qo'yishimiz va turli testlarda shu qiymatlarga murojat qilishimiz mumkin:
In [ ]:
import unittest
from cars import Car


class CarTest(unittest.TestCase):
"""Car klassini tekshirish uchun test"""
def setUp(self):
make = "GM"
model = "Malibu"
year = 2020
self.price = 40000
self.km = 10000
self.avto1 = Car(make,model,year)
self.avto2 = Car(make,model,year,price=self.price)

def test_create(self):
# Qiymatlar mavjudligini assertIsNotNone metodi bilan tekshiramiz
self.assertIsNotNone(self.avto1.make)
self.assertIsNotNone(self.avto1.model)
self.assertIsNotNone(self.avto1.year)
# Qiymat mavjud emasligini assertIsNone metodi bilan tekshiramiz
self.assertIsNone(self.avto1.price)
# Qiymat tengligini assertEquals metodi bilan tekshiramiz
self.assertEqual(0,self.avto1.get_km())
# avto2 narhini tekshiramiz
self.assertEqual(self.price,self.avto2.price)


unittest.main()
E'tibor bering, setUp() metodi ichida ba'zi o'zagruvchilar self yordamida berilgan (self.price, self.km, self.avto1, self,avto2). Bu o'zgaruvchilarga biz CarTest() klassining ichida istalgan joydan murojat qilishimiz mumkin. Shuning uchun ham, test_create() funksiyasi ichida biz yangi obyekt yaratmasdan, setUp() ichidagi avto1 va avto2 obyektlariga murojat qildik.
METODLARNI TEKSHIRISH
Obyektimiz bir nechta metodlardan iborat. Ularning har biri uchun alohida test yozamiz. Bu metodlarni CarTest ichida yozishni unutmang.
Osonidan boshlaymiz:
In [ ]:
def test_set_price(self):
self.avto2.set_price(self.price)
self.assertEqual(self.price,self.avto2.price)
Endi add_km() metodini tekshiraylik. Bu metodimiz faqatgina musbat qiymat qabul qilishi, manfiy qiymat uzatilganda ValueError xatosini qaytarishi kerak edi. Shuning uchun metodni test qilishda avval musbat, keyin esa manfiy qiymat berib ko'ramiz.
In [ ]:
def test_add_km(self):
#1 Musbat qiymat berib ko'ramiz
self.avto1.add_km(self.km)
self.assertEqual(self.km,self.avto1.get_km())
#2 Manfiy qiymat berib ko'ramiz
new_km = -5000
try:
self.avto1.add_km(new_km)
except ValueError as error:
self.assertEqual(type(error), ValueError)
Navbat get_info() metodiga. Bu metod ham obyektning xususiyatlaridan kelib chiqqan holda 2 hil qiymat qaytarishi mumkin, demak testimiz bu ikki holatni hisobga olishi kerak.
In [ ]:
def test_get_info(self):
avto1_info = 'GM Malibu, 2020-yil, 0km yurgan.'
self.assertEqual(avto1_info,self.avto1.get_info())
# avto1 narhi va km o'zgartiramiz
self.avto1.set_price(50000)
self.avto1.add_km(20000)
avto1_info = 'GM Malibu, 2020-yil, 20000km yurgan. Narhi: 50000'
self.assertEqual(avto1_info,self.avto1.get_info())
Yakuniy test dasturimiz quyidagi ko'rinishga ega bo'ldi:
In [ ]:
import unittest
from cars import Car


class CarTest(unittest.TestCase):
"""Car klassini tekshirish uchun test"""
def setUp(self):
make = "GM"
model = "Malibu"
year = 2020
self.price = 40000
self.km = 10000
self.avto1 = Car(make,model,year)
self.avto2 = Car(make,model,year,price=self.price)

def test_create(self):
# Qiymatlar mavjudligini assertIsNotNone metodi bilan tekshiramiz
self.assertIsNotNone(self.avto1.make)
self.assertIsNotNone(self.avto1.model)
self.assertIsNotNone(self.avto1.year)
# Qiymat mavjud emasligini assertIsNone metodi bilan tekshiramiz
self.assertIsNone(self.avto1.price)
# Qiymat tengligini assertEquals metodi bilan tekshiramiz
self.assertEqual(0,self.avto1.get_km())
# avto2 narhini tekshiramiz
self.assertEqual(self.price,self.avto2.price)

def test_set_price(self):
self.avto2.set_price(self.price)
self.assertEqual(self.price,self.avto2.price)

def test_add_km(self):
# Musbat qiymat berib ko'ramiz
self.avto1.add_km(self.km)
self.assertEqual(self.km,self.avto1.get_km())
# Manfiy qiymat berib ko'ramiz
new_km = -5000
try:
self.avto1.add_km(new_km)
except ValueError as error:
self.assertEqual(type(error), ValueError)

def test_get_info(self):
avto1_info = 'GM Malibu, 2020-yil, 0km yurgan.'
self.assertEqual(avto1_info,self.avto1.get_info())
# avto1 narhi va km o'zgartiramiz
self.avto1.set_price(50000)
self.avto1.add_km(20000)
avto1_info = 'GM Malibu, 2020-yil, 20000km yurgan. Narhi: 50000'
self.assertEqual(avto1_info,self.avto1.get_info())



unittest.main()
Testni bajaramiz va quyidagi natijani olamiz:
In [ ]:
....
----------------------------------------------------------------------
Ran 4 tests in 0.002s


OK
AMALIYOT

  • 30-darsimizda Shaxs va Talaba klasslarini yaratgan edik. Shu ikki klassning xususiyatlari va metodlarini tekshiruvchi test dasturlar yozing.

  • Ikki klass uchun yagona test yoza olasizmi? (isInstance() funksiyasini eslang)




38-DARS. PYTHON STANDART KUTUBXONASI


Pythondagi foydali modullar bilan tanishamiz.

KIRISH


Python dasturlash tili yildan-yilga ommalashib bormoqda. Bunga birinchi navbatda Pythonning sodda va tushunarli sintaksi sabab bo'lsa, ikkinchi va ehtimol eng ko'zga ko'ringan sabab bu Pythonning keng qamrovli kutubxonalar to'plamidir. Ushbu darsimizda Pytyon kutubxonasidagi ba'zi muhim modullar bilan tanishamiz. Standart kutubxonanig to'liq tarkibi bilan Python rasmiy sahifasida tanishishingiz mumkin.

Download 10,21 Mb.

Do'stlaringiz bilan baham:
1   ...   48   49   50   51   52   53   54   55   ...   58




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish