2011-08-30 24 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):

する必要があります!ように、一致する例外についてはあまり好き嫌いdoctestを作るdoctestのためにELLIPSISまたはIGNORE_EXCEPTION_DETAILフラグを使用します。

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

+0

はどうもありがとうございました(ELLIPSISがあまりにもここで働いでしょう)。最初のテキストファイル__extremely__を慎重に変更するようあなたの助言に従っていますが、今はまだ**フラグ**を試していませんが、これはうまくいきます。私は学習が進むにつれて試してみるかもしれません。 – Tracy

+0

このフラグによっても例外メッセージは無視されることに注意してください。 – ony