Tôi đã xác định một lớp ngoại lệ SpamException
trong mô-đun spam
. Bây giờ tôi muốn thử nghiệm hàm spam_function
, điều này làm tăng ngoại lệ này. Vì vậy, tôi đã viết doctest sau.Cách kiểm tra ngoại lệ với doctest bằng Python 2.x và 3.x?
>>> spam_function()
Traceback (most recent call last):
....
SpamException
Thử nghiệm thành công trên Python 2.x, nhưng trên thử nghiệm Python 3.x không thành công. Bài kiểm tra sau hoạt động trên Python 3.x.
>>> spam_function()
Traceback (most recent call last):
....
spam.SpamException
Sự khác biệt đáng chú ý ở đây là bao gồm tên mô-đun trong tên ngoại lệ. Vậy làm thế nào tôi có thể viết một doctest hoạt động trên cả Python 2.x và 3.x?
Tôi không nhận thấy bất kỳ thay đổi nào khi thêm '# doctest: + IGNORE_EXCEPTION_DETAIL', tức là nó không bị lỗi Phiên bản Python. Bạn có thể thêm một ví dụ hoàn chỉnh? –
'IGNORE_EXCEPTION_DETAIL' hoạt động ngay khi lớp ngoại lệ được đề cập có phương thức' __str__' trả về một chuỗi không trống. Sau đó và chỉ sau đó dòng ngoại lệ cuối cùng có dấu hai chấm, đó là bắt buộc để chỉ thị hoạt động. –
Dường như IGNORE_EXCEPTION_DETAIL cũng bỏ qua thông báo ngoại lệ, loại bỏ một phần lớn mục đích của việc xử lý các hành vi này. Nhưng loại ngoại lệ vẫn được chọn. ouf! – vaab