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

คุณจะทดสอบว่าฟังก์ชัน Python ส่งข้อยกเว้นได้อย่างไร


เราเขียน unittest ที่ล้มเหลวก็ต่อเมื่อฟังก์ชันไม่มีข้อยกเว้นที่คาดไว้

นอกจากนี้เรายังทดสอบว่าฟังก์ชัน Python ส่งข้อยกเว้นหรือไม่

ตัวอย่างเช่น ดูตัวอย่างโค้ดที่เราวางลงใน Python shell เพื่อทดสอบ Python's type-safety:

ตัวอย่าง

นำเข้า unittestclass MyTestCase(unittest.TestCase):def test_1_cannot_add_int_and_str(self):with self.assertRaises(TypeError):1 + '1' def test_2_cannot_add_int_and_str(self):import operator self.assertRaises(TypeError, operator.add, 1 , '1') unittest.main(exit=False)

ดำเนินการทดสอบ

ผลลัพธ์

และเทอร์มินัลจะส่งออกสิ่งต่อไปนี้ -

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

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

เราสามารถเขียนได้โดยไม่ต้องใช้ตัวจัดการบริบท ดูการทดสอบที่สอง อาร์กิวเมนต์แรกจะเป็นประเภทข้อผิดพลาดที่คุณคาดว่าจะเพิ่ม อาร์กิวเมนต์ที่สอง ฟังก์ชันที่คุณกำลังทดสอบ และอาร์กิวเมนต์ที่เหลือและ args ของคีย์เวิร์ดจะถูกส่งไปยังฟังก์ชันนั้น

ง่ายกว่ามาก และสามารถอ่านได้เพียงแค่ใช้ตัวจัดการบริบท

เราเห็นว่าอย่างที่คาดไว้ การพยายามเพิ่ม 1 และ '1' ส่งผลให้เกิด TypeError