2011-08-30 61 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