บทความนี้แนะนำพื้นฐานการทดสอบซอฟต์แวร์ด้วยโมดูล unittest ใน Python 3.x รองรับการทำอัตโนมัติ แชร์ setup/teardown และทดสอบอิสระต่อเฟรมเวิร์ก
แนวคิดหลัก:
- TestCase - คลาสฐานสำหรับชุดอินพุต ใช้
unittest.TestCase - TestSuite - รวมหลาย Test Case รันพร้อมกัน
- TestRunner - รันและแสดงผลลัพธ์
- TestFixture - ฐานสำหรับ Test Case ในสภาพแวดล้อมที่เกี่ยวข้อง
ตัวอย่างพื้นฐาน
import unittest
class TestStringMethods(unittest.TestCase):
def test_upper(self):
self.assertEqual('TUTOR'.lower(), 'tutor')
def test_islower(self):
self.assertTrue('tutor'.islower())
self.assertFalse('Tutor'.islower())
if __name__ == '__main__':
unittest.main()
ผลลัพธ์
...
-------------------------------
Ran 2 tests in 0.000s
OK

ใช้เมธอด built-in:
assertEqual() - เปรียบเทียบผลลัพธ์กับค่าที่คาดหวังassertTrue() - ตรวจสอบเงื่อนไขเป็น TrueassertFalse() - ตรวจสอบเงื่อนไขเป็น False
ผลลัพธ์ 3 รูปแบบ:
- OK - ผ่านทั้งหมด
- FAIL - ล้มเหลว มี AssertionError
- ERROR - มีข้อยกเว้น/ข้อผิดพลาด
ข้ามการทดสอบด้วย @unittest.skip(<reason>)
ตัวอย่าง Skip
import unittest
class TestString(unittest.TestCase):
@unittest.skip("check skipped tests")
def test_upper(self):
self.assertEqual('TUTOR'.lower(), 'tutor')
def test_islower(self):
self.assertTrue('tutor'.islower())
self.assertFalse('Tutor'.islower())
if __name__ == '__main__':
unittest.main()
ผลลัพธ์
...
------------------------------------------
Ran 2 tests in 0.000s
OK (skipped=2)
สรุป
เรียนรู้ Unit Testing ใน Python ด้วย Unittest module ใน Python 3.x