2011-08-30 100 views
5

我在一個名爲test2.txt的文件中有以下內容。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) 

我用python -m test2.txt調用測試運行。以下結果完全超出了我的預期。

screenshot of terminal output

我的想法是,測試應該是成功的,因爲我已經寫了預期的輸出在我test2.txt文件,它幾乎是'匹配我從控制檯輸出了。我試過添加'File "G:\"'.... line?但測試仍然失敗。

回答

8

doctest對預期異常的格式非常小心。你錯過了一個空間:

Traceback(most recent call last):應該Traceback (most recent call last):

而且,這仍然會失敗,因爲你回溯消息是過於具體的(也有不正確的空格)!使用ELLIPSISIGNORE_EXCEPTION_DETAIL標誌,以文檔測試,使文檔測試少挑剔匹配例外,像這樣:

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

ELLIPSIS將在這裏工作過)

+0

非常感謝你。我遵循你的建議,仔細修改最初的文本文件__extremely__,現在它可以工作,雖然我還沒有嘗試**標誌**你談論。隨着我的學習進展,我可能會嘗試一下。 – Tracy

+0

值得注意的是,這個標誌還會導致異常消息被忽略。 – ony