การยืนยัน (Assertion) เป็น sanity-check ที่คุณสามารถเปิดหรือปิดได้เมื่อคุณเสร็จสิ้นการทดสอบโปรแกรม
วิธีที่ง่ายที่สุดในการคิดถึง assertion คือเปรียบเทียบกับคำสั่ง raise-if (หรือให้แม่นยำกว่า raise-if-not statement) นิพจน์ถูกทดสอบ และถ้าผลลัพธ์เป็น false ข้อยกเว้นจะถูก raise
Assertions ถูกดำเนินการโดยคำสั่ง assert คีย์เวิร์ดล่าสุดของ Python ที่นำเข้ามาในเวอร์ชัน 1.5
โปรแกรมเมอร์มักวาง assertions ที่เริ่มต้นของฟังก์ชันเพื่อตรวจสอบ input ที่ถูกต้อง และหลังการเรียกฟังก์ชันเพื่อตรวจสอบ output ที่ถูกต้อง
คำสั่ง assert (The assert Statement)
เมื่อพบคำสั่ง assert Python จะประเมินนิพจน์ที่มาด้วย ซึ่งหวังว่าเป็น true หากนิพจน์เป็น false Python จะ raise AssertionError exception
ไวยากรณ์ (Syntax) สำหรับ assert คือ:
assert Expression[, Arguments]
หาก assertion ล้มเหลว Python ใช้ ArgumentExpression เป็นอาร์กิวเมนต์สำหรับ AssertionError ข้อยกเว้น AssertionError สามารถจับและจัดการได้เหมือนข้อยกเว้นอื่นๆ โดยใช้ try-except statement แต่ถ้าไม่จัดการ จะทำให้โปรแกรมสิ้นสุดและแสดง traceback
ตัวอย่าง
นี่คือฟังก์ชันที่แปลงอุณหภูมิจากองศาเคลวินเป็นองศาฟาเรนไฮท์ เนื่องจากศูนย์องศาเคลวินคืออุณหภูมิต่ำสุด ฟังก์ชันจะออกถ้าเห็นอุณหภูมิลบ:
#!/usr/bin/python
def KelvinToFahrenheit(Temperature):
assert (Temperature >= 0), "Colder than absolute zero!"
return ((Temperature-273)*1.8)+32
print KelvinToFahrenheit(273)
print int(KelvinToFahrenheit(505.78))
print KelvinToFahrenheit(-5)
ผลลัพธ์ (Output)
เมื่อรันโค้ดข้างต้น จะได้ผลลัพธ์ดังนี้:
32.0
451
Traceback (most recent call last):
File "test.py", line 9, in
print KelvinToFahrenheit(-5)
File "test.py", line 4, in KelvinToFahrenheit
assert (Temperature >= 0), "Colder than absolute zero!"
AssertionError: Colder than absolute zero!