6

というファイルに次の内容がありますtest2.txt

>>> 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ます。以下の結果は私の予想からかなり外れています。

端末出力のスクリーンショット

私の考えでは、期待される出力をファイルに書き込んだので、テストは成功するはずでありtest2.txt、コンソール出力から得たものと「ほぼ」一致します。'File "G:\"'.... line?を追加してみました しかし、テストはまだ失敗しました。

4

1 に答える 1

10

doctestは、予想される例外の形式に非常に注意を払っています。あなたはスペースを逃しました:

Traceback(most recent call last):する必要がありますTraceback (most recent call last):

さらに、トレースバックメッセージが過度に具体的である(また、空白が正しくない)ため、これは失敗します。ELLIPSISまたはフラグを使用しIGNORE_EXCEPTION_DETAILてdoctestを実行し、次のように、一致する例外についてdoctestの選択を少なくします。

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

ELLIPSISここでも機能します)

于 2011-08-30T17:38:43.583 に答える