2011-08-30 37 views
5

Tôi có các nội dung sau trong tệp có tên test2.txt.xử lý kiểm tra ngoại lệ python doctest

>>> def faulty(): 
... yield 5 
... return 7 
Traceback(most recent call last): 
SyntaxError: 'return' with argument inside generator(<doctest test.txt[0]>,line 3) 

Tôi gọi chạy thử nghiệm với python -m test2.txt. Các kết quả dưới đây là khá ngoài mong đợi của tôi.

screenshot of terminal output

suy nghĩ của tôi là bài kiểm tra nên được thành công bởi vì tôi đã viết sản lượng dự kiến ​​trong tập tin test2.txt của tôi và nó 'gần như' phù hợp với những gì tôi nhận được từ giao diện điều khiển đầu ra. Tôi đã thử thêm 'File "G:\"'.... line? nhưng thử nghiệm vẫn thất bại.

Trả lời

8

doctest cực kỳ cẩn thận với định dạng ngoại lệ dự kiến. Bạn bỏ lỡ một không gian:

Traceback(most recent call last): nên Traceback (most recent call last):

Hơn nữa, đây vẫn sẽ thất bại, như nhắn traceback của bạn là quá cụ thể (và cũng có khoảng trắng không chính xác)! Sử dụng các ELLIPSIS hoặc IGNORE_EXCEPTION_DETAIL cờ để doctest để làm doctest ít kén chọn về ngoại lệ phù hợp, như vậy:

>>> def faulty(): # doctest: +IGNORE_EXCEPTION_DETAIL 
...  yield 5 
...  return 7 
Traceback (most recent call last): 
SyntaxError: 'return' with argument inside generator (...) 

(ELLIPSIS sẽ làm việc ở đây quá)

+0

thank you very much. Tôi làm theo lời khuyên của bạn để sửa đổi các tập tin văn bản ban đầu __extremely__ cẩn thận và bây giờ nó hoạt động mặc dù tôi chưa thử ** cờ ** bạn nói về. Tôi có thể thử khi việc học của tôi diễn ra. – Tracy

+0

Cần lưu ý rằng lá cờ này cũng làm cho thông điệp ngoại lệ bị bỏ qua. – ony