ในบทช่วยสอนนี้ เราจะเรียนรู้การทดสอบอัตโนมัติ (Automated Testing) ใน Python หลังเขียนโค้ด ต้องทดสอบด้วยอินพุตต่างๆ ว่าทำงานถูกต้องหรือไม่ การทดสอบด้วยมือ (Manual) ยุ่งยาก เราจะใช้โมดูล unittest
พื้นฐาน unittest
- สร้างคลาสสืบทอดจาก
unittest.TestCase - เมธอดทดสอบต้องขึ้นต้นด้วย test (เช่น test_something)
- ใช้ assertion methods เช่น
assertTrue,assertEqual,assertFalse
ตัวอย่างพื้นฐาน
import unittest
class SampleTest(unittest.TestCase):
def test(self):
self.assertTrue(True)
unittest.main()ผลลัพธ์
Ran 1 test in 0.001s OK
ทดสอบ String Methods
ตัวอย่าง
import unittest
class TestingStringMethods(unittest.TestCase):
def test_string_equality(self):
self.assertEqual('ttp' * 5, 'ttpttpttpttpttp')
def test_string_case(self):
self.assertEqual('tutorialspoint'.upper(), 'TUTORIALSPOINT')
def test_is_string_upper(self):
self.assertTrue('TUTORIALSPOINT'.isupper())
self.assertFalse('TUTORIALSpoint'.isupper())
unittest.main()ผลลัพธ์
Ran 3 tests in 0.001s OK
Assertion Methods ที่ใช้บ่อย
| เมธอด | คำอธิบาย |
|---|---|
| assertEqual(a, b) | a == b |
| assertNotEqual(a, b) | a != b |
| assertTrue(x) | x is True |
| assertFalse(x) | x is False |
| assertIsNone(x) | x is None |
| assertIn(a, b) | a in b |
| assertRaises(Error, func) | func โยน Error |
สรุป
unittest ช่วยประหยัดเวลาทดสอบมาก เขียน test cases ครั้งเดียว รันซ้ำได้ตลอดเวลา หากมีข้อสงสัย สามารถถามได้ในส่วนความคิดเห็น