Python Doctest 异常测试处理

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来运行测试,但结果与我的预期相差甚远。如下图所示的终端输出截图。

screenshot of terminal output

我原本以为测试应该成功,因为在test2.txt文件中写入了期望的输出并且它与控制台输出的结果'几乎'匹配。我尝试添加'File "G:\"'.... line这一行代码,但测试仍然失败。
1个回答

11

doctest 对期望异常的格式非常严格。你漏了一个空格:

Traceback(most recent call last): 应该为 Traceback (most recent call last):

此外,这仍然会失败,因为您的回溯消息过于具体(并且还有不正确的空格!)。使用 ELLIPSISIGNORE_EXCEPTION_DETAIL 标志来使 doctest 对匹配异常要求较低,如下所示:

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

(ELLIPSIS在这里也可以使用)


非常感谢您的建议,我非常小心地修改了初始文本文件,并且现在它可以正常工作,尽管我还没有尝试过您所说的“标志”。随着我的学习继续,我可能会尝试一下。 - Tracy
值得注意的是,此标记还会导致异常消息被忽略。 - ony

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接