Một assertion là một kiểm tra sự suy đoán (sanity-check) mà bạn có thể bật hoặc tắt khi đã xong việc test chương trình.
Cách dễ nhất để hiểu assertion là ví nó như câu lệnh raise-if (hoặc chính xác hơn là raise-if-not). Một biểu thức được kiểm tra, và nếu kết quả là false, một ngoại lệ được raise.
Assertions được thực hiện bởi câu lệnh assert, từ khóa mới nhất của Python, giới thiệu từ phiên bản 1.5.
Lập trình viên thường đặt assertions ở đầu hàm để kiểm tra đầu vào hợp lệ, và sau lời gọi hàm để kiểm tra đầu ra hợp lệ.
Câu lệnh assert
Khi gặp câu lệnh assert, Python đánh giá biểu thức đi kèm, hy vọng nó là true. Nếu biểu thức là false, Python raise một ngoại lệ AssertionError.
Cú pháp cho assert:
assert Expression[, Arguments]
Nếu assertion thất bại, Python dùng ArgumentExpression làm đối số cho AssertionError. Ngoại lệ AssertionError có thể được bắt và xử lý như bất kỳ ngoại lệ nào khác dùng try-except, nhưng nếu không xử lý, chúng sẽ chấm dứt chương trình và tạo traceback.
Ví dụ
Đây là hàm chuyển đổi nhiệt độ từ Kelvin sang Fahrenheit. Vì 0 độ Kelvin là nhiệt độ thấp nhất có thể, hàm sẽ thoát nếu thấy nhiệt độ âm:
#!/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)
Kết quả
Khi mã trên được thực thi, nó cho kết quả sau:
32.0 451 Traceback (most recent call last): File "test.py", line 9, inprint KelvinToFahrenheit(-5) File "test.py", line 4, in KelvinToFahrenheit assert (Temperature >= 0), "Colder than absolute zero!" AssertionError: Colder than absolute zero!