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

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


ในบทช่วยสอนนี้ เราจะเรียนรู้เกี่ยวกับการทดสอบหน่วย โดยใช้ unittest โมดูลในตัว การทดสอบมีบทบาทสำคัญในการพัฒนาซอฟต์แวร์ คุณจะทราบปัญหาก่อนที่จะเข้าสู่การผลิตเอง

เราจะเรียนรู้พื้นฐานของการทดสอบใน Python โดยใช้โมดูลในตัวที่เรียกว่า unittest . เข้าสู่บทแนะนำกันเลย

การทดสอบหน่วยคืออะไร

หากคุณใช้ระบบเข้าสู่ระบบเป็นตัวอย่าง แต่ละช่องในแบบฟอร์มการเข้าสู่ระบบคือหน่วย/ส่วนประกอบ และการทดสอบการทำงานของหน่วย/ส่วนประกอบเหล่านั้นเรียกว่า การทดสอบหน่วย

ตัวอย่าง

มาดูโครงสร้างพื้นฐานของ unittest framework กัน

# การนำเข้า unittest moduleimport unittest# unittest จะทดสอบวิธีการทั้งหมดที่ชื่อขึ้นต้นด้วย 'test'class SampleTest(unittest.TestCase):# return True หรือ False def test(self):self.assertTrue(True)# รัน testunittest.main()

ผลลัพธ์

หากคุณเรียกใช้โปรแกรมข้างต้น คุณจะได้ผลลัพธ์ดังต่อไปนี้

<ก่อนหน้า>------------------------------------------------------------- ----------------------- ทดสอบรัน 1 ใน 0.001sOK

2.การทดสอบวิธีสตริง

ตอนนี้ เราจะทดสอบวิธีสตริงแบบต่างๆ กับกรณีทดสอบตัวอย่าง โปรดจำไว้ว่าชื่อเมธอดต้องขึ้นต้นด้วย การทดสอบ

มาดู Intro สั้นๆ ของแต่ละวิธีที่เราจะเขียนกัน

  • test_string_equality

    • เมธอดนี้จะทดสอบว่าสองสตริงเท่ากันหรือไม่โดยใช้ asserEqaul วิธีการของ unittest.TestCase

  • test_string_case

    • เมธอดนี้ทดสอบว่ากรณีสตริงสองกรณีเท่ากันหรือไม่โดยใช้ asserEqaul วิธีการของ unittest.TestCase

  • test_is_string_upper

    • เมธอดนี้จะทดสอบว่าสตริงเป็นตัวพิมพ์ใหญ่หรือไม่โดยใช้ asserTrue และ ยืนยันเท็จ วิธีการของ unittest.TestCase .

ตัวอย่าง

# กำลังนำเข้า unittest moduleimport unittestclass TestingStringMethods(unittest.TestCase):# string equal def test_string_equality(self):# หากอาร์กิวเมนต์ทั้งสองเท่ากันก็จะสำเร็จ self.assertEqual('ttp' * 5, 'ttpttpttpttpttp') # เปรียบเทียบ สองสตริง def test_string_case(ตัวเอง):# หากอาร์กิวเมนต์ทั้งสองเท่ากันก็จะสำเร็จ self.assertEqual('tutorialspoint'.upper(), 'TUTORIALSPOINT') # ตรวจสอบว่าสตริงนั้นอยู่ด้านบนหรือไม่ def test_is_string_upper (ตัวเอง):# ใช้แล้ว เพื่อตรวจสอบว่าคำสั่งนั้นเป็นจริงหรือเท็จ # ผลลัพธ์ของนิพจน์ภายใน **assertTrue** จะต้องเป็น True เพื่อผ่านกรณีทดสอบ # ผลลัพธ์ของนิพจน์ภายใน **assertFalse** จะต้องเป็นเท็จจึงจะผ่านการทดสอบด้วยตนเอง .assertTrue('TUTORIALSPOINT'.isupper()) self.assertFalse('TUTORIALSpoint'.isupper())# รัน testunittest.main()

ผลลัพธ์

หากคุณเรียกใช้โค้ดข้างต้น คุณจะได้ผลลัพธ์ต่อไปนี้หากผ่านการทดสอบทุกกรณี

<ก่อนหน้า>...--------------------------------------------- -------------------------- รัน 3 การทดสอบใน 0.001sOK

ตัวอย่าง

เรียกใช้โปรแกรมต่อไปนี้เพื่อดูผลลัพธ์ของกรณีทดสอบที่ล้มเหลว

# กำลังนำเข้า unittest moduleimport unittestclass TestingStringMethods(unittest.TestCase):# string equal def test_string_equality(self):# หากอาร์กิวเมนต์ทั้งสองเท่ากันก็จะสำเร็จ self.assertEqual('ttp' * 5, 'ttpttpttpttpttp') # เปรียบเทียบ สองสตริง def test_string_case(ตัวเอง):# หากอาร์กิวเมนต์ทั้งสองเท่ากันก็จะสำเร็จ self.assertEqual('tutorialspoint'.upper(), 'TUTORIALSPOINT') # ตรวจสอบว่าสตริงนั้นอยู่ด้านบนหรือไม่ def test_is_string_upper (ตัวเอง):# ใช้แล้ว เพื่อตรวจสอบว่าคำสั่งนั้นเป็นจริงหรือเท็จ # ผลลัพธ์ของนิพจน์ภายใน **assertTrue** จะต้องเป็น True เพื่อผ่านกรณีทดสอบ # ผลลัพธ์ของนิพจน์ภายใน **assertFalse** จะต้องเป็นเท็จจึงจะผ่านการทดสอบด้วยตนเอง .assertTrue('TUTORIALSPOINt'.isupper()) self.assertFalse('TUTORIALSpoint'.isupper())# รัน testunittest.main()

ผลลัพธ์

หากคุณเรียกใช้โปรแกรมข้างต้น คุณจะได้ผลลัพธ์ดังต่อไปนี้

<ก่อนหน้า>=====================================================================ล้มเหลว:test_is_string_upper (__main__.TestingStringMethods) -------------------- -------------------------------------------------- -Traceback (การโทรล่าสุดครั้งล่าสุด):ไฟล์ "p:/Python Work/Stopwatch/practice.py" บรรทัดที่ 21 ใน test_is_string_upperself.assertTrue('TUTORIALSPOINt'.isupper())AssertionError:เท็จไม่เป็นความจริง ---- -------------------------------------------------- ----------------รัน 3 การทดสอบใน 0.016 วินาทีFAILED (failures=1)

ข้อความเราจะล้มเหลวแม้กรณีทดสอบหนึ่งกรณีจะล้มเหลวในทุกกรณีทดสอบ

บทสรุป

หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น