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):

此外,这仍然会失败,因为您的回溯消息过于具体(并且还有不正确的空格)!使用ELLIPSISorIGNORE_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 回答