Python doctest 异常测试处理
我在一个叫做 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:\"'.... 这一行
,但是测试还是失败了。
1 个回答
11
doctest 对于预期的错误格式非常严格。你漏了一个空格:
Traceback(most recent call last):
应该写成 Traceback (most recent call last):
而且,即使你改了这个,还是会失败,因为你的错误信息太具体了(而且空格也不对)!可以使用 ELLIPSIS
或 IGNORE_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
在这里也可以用)