เราเขียน 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