Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การทดสอบหน่วยในโปรแกรม Python โดยใช้ Unittest


ในบทความนี้ เราจะเรียนรู้เกี่ยวกับพื้นฐานของการทดสอบซอฟต์แวร์โดยใช้โมดูล unittest ที่มีอยู่ใน Python 3.x หรือก่อนหน้านี้ อนุญาตให้ใช้ระบบอัตโนมัติ แชร์การตั้งค่าและรหัสออกสำหรับการทดสอบ และการทดสอบอิสระสำหรับทุกเฟรมเวิร์ก

ในการทดสอบหน่วย เราใช้แนวคิดเชิงวัตถุที่หลากหลาย เราจะพูดถึงแนวคิดที่ใช้เป็นหลักบางส่วนที่นี่

  • ทดสอบ − เป็นคลาสพื้นฐานเฉพาะของการตอบสนองตามชุดของอินพุตที่กำหนด เราใช้คลาสฐานของ unittest เช่น “TestCase” เพื่อดำเนินการนี้

  • ชุดทดสอบ − ใช้เพื่อรวมกรณีทดสอบเข้าด้วยกันและดำเนินการพร้อมกัน

  • ผู้ทดสอบ − มันเป็นไปตามการดำเนินงานตามผลลัพธ์ มีส่วนร่วมในการแสดงผลหลังจากดำเนินการงาน

  • ชุดทดสอบ − ทำหน้าที่เป็นพื้นฐานสำหรับกรณีทดสอบในสภาพแวดล้อมที่เกี่ยวข้อง

มาดูตัวอย่างพื้นฐานเพื่อดูว่าการทดสอบหน่วยทำงานอย่างไร

ตัวอย่าง

นำเข้า unittestclass TestStringMethods(unittest.TestCase):def test_upper(self):self.assertEqual('TUTOR'.lower(), 'tutor') def test_islower(self):self.assertTrue('tutor'.islower() )) self.assertFalse('Tutor'.islower()) ถ้า __name__ =='__main__':unittest.main()

ผลลัพธ์

...-------------------------------รัน 2 การทดสอบใน 0.000sOK

การทดสอบหน่วยในโปรแกรม Python โดยใช้ Unittest

ที่นี่เราขยายคลาสการทดสอบหน่วยในรูปแบบของการสืบทอดเดี่ยว ที่นี่เราใช้วิธีการในตัวเช่น assertEqual() , assertTrue() &assertFalse() .

assertEqual() ใช้เพื่อตรวจสอบ/เปรียบเทียบผลลัพธ์กับผลลัพธ์

assertTrue() ใช้เพื่อตรวจสอบว่าเงื่อนไขที่กำหนดเป็นจริงหรือไม่


assertFalse() ใช้เพื่อตรวจสอบว่าเงื่อนไขที่กำหนดนั้นเป็นเท็จหรือไม่

ผลลัพธ์ของโค้ดด้านบนสามารถมีได้ 3 รูปแบบ:

ตกลง – แสดงว่าการทดสอบทั้งหมดที่สร้างขึ้นได้ดำเนินการสำเร็จแล้ว

FAIL – แสดงว่ากรณีทดสอบล้มเหลวและมีข้อยกเว้น AssertionError

ข้อผิดพลาด – สิ่งนี้บ่งชี้ว่าการทดสอบทำให้เกิดข้อยกเว้น/ข้อผิดพลาด

เราสามารถใช้มัณฑนากร @unittest.skip()

ตัวอย่าง

นำเข้า unittestclass 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()) ถ้า __name__ =='__main__':unittest.main()

ผลลัพธ์

<ก่อนหน้า>...------------------------------------------ รัน 2 ทดสอบใน 0.000sOK (ข้าม=2)

บทสรุป

ในบทความนี้ เราได้เรียนรู้เกี่ยวกับการทดสอบหน่วยใน Python โดยใช้โมดูล Unittest ใน Python 3.x หรือก่อนหน้านั้น