Yuqorida matn qaytaruvchi funksiyani tekshirishni ko'rdik. Keling endi sonlar bilan ishlashni ko'ramiz. Misol tariqasida yangi circle.py
modulini yaratamiz va uning ichida doiraning yuzini (πr2\pi r^2πr2) va perimetrini (2πr2\pi r2πr) hisoblaydigan funksiyalar yozamiz:
def getArea(r,pi=3.14159):
"""Doiraning yuzini qaytaruvchi funksiya"""
return pi*(r**2)
def getPerimeter(r,pi=3.14159):
"""Doiraning perimetrini qaytaruvchi funksiya"""
return 2*pi*r
E'tibor bering, ikki funksiya ham, agar foydalanuvchi aniq qiymat bermasa, π\piπ ning qiymatini standart argument sifatida 3.14159
ga teng deb qabul qilayapti. Ushbu funksiyalarni tekshirish uchun alohida circle_test.py
test dasturini yozamiz. Matnlardan farqli ravishda, sonlarni taqqoslash uchun assertAlmostEqual()
metodidan foydalanamiz. Bu metod, ikki sonni nuqtadan keyin 7 xonagacha aniqlikda tekshiradi:
import unittest
from circle import getArea, getPerimeter
class CircleTest(unittest.TestCase):
def test_area(self):
self.assertAlmostEqual(getArea(10), 314.159)
self.assertAlmostEqual(getArea(3),28.27431)
def test_perimeter(self):
self.assertAlmostEqual(getPerimeter(10), 62.8318)
self.assertAlmostEqual(getPerimeter(4), 25.13272)
unittest.main())
Bu yerda e'tibor qiling, biz har bir funksiya uchun 2 tadan test yozdik. Testni bajaramiz va quyidagi natijani olamiz:
Ran 2 tests in 0.001s
OK
MANTIQIY QIYMATLARNI TEKSHIRISH
Agar funksiya mantiqiy qiymat qaytarsa, bunday funksiyalarni assertTrue()
va assertFalse()
metodlari yordamida tekshirishimiz mumkin.
Quyidagi funksiyamiz kiritilgan son tub yoki yo'q ekanini tekshiradi:
def tubSonmi(n):
if n==2 or n==3: return True
if n%2==0 or n<2: return False
for i in range(3, int(n**0.5)+1, 2): # faqat toq sonlarni tekshiramiz
if n%i==0:
return False
return True
Funksiyani alohida tubSonmi.py
fayliga saqlaymiz. Funksiyani tekshirish uchun tubSon_test.py
dasturini yozamiz:
import unittest
from tubSonmi import tubSonmi
class tubSonTest(unittest.TestCase):
def test_true(self):
self.assertTrue(tubSonmi(7))
self.assertTrue(tubSonmi(193))
self.assertTrue(tubSonmi(547))
def test_false(self):
self.assertFalse(tubSonmi(6))
self.assertFalse(tubSonmi(265))
self.assertFalse(tubSonmi(489))
unittest.main()
Test davomida tubSonmi()
funksiyasini bir nechta tub (7, 193, 547
) va tub bo'lmagan (6, 265, 489
) sonlar bilan chaqirdik. Bunda assertTrue()
metodi funksiyamiz haqiqatdan ham True
qiymatini qaytarishini, assertFalse()
metodi esa funksiyamiz False
qiymat qaytarishini tekshiradi.
TAQQOSLASH METODLARI
TestCase
klassi tarkibidagi boshqa taqqoslash metodlari ham mavjud:
Metod | Nimani taqqoslaydi |
assertEqual(a, b) | a == b |
assertNotEqual(a, b) | a != b |
assertTrue(x) | x ning qiymati True |
assertFalse(x) | x ning qiymati False |
assertIs(a, b) | a bu b |
assertIsNot(a, b) | a bu b emas |
assertIsNone(x) | x ning qiymati None |
assertIsNotNone(x) | x ning qiymati None emas |
assertIn(a, b) | a b ning ichida |
assertNotIn(a, b) | a b ning ichida emas |
assertIsInstance(a, b) | a b ning vorisi |
assertNotIsInstance(a, b) | a b ning vorisi emas |