Python doctest 异常

10

所以,我正在尝试将一个异常与doctest相匹配。

>>> api = Api("foo", "bar") # doctest: +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last):
...
AuthError
问题在于这适用于py2.7,但不适用于Python 3。异常跟踪的格式已经改变,现在包括完整的模块名称。例如,在Python 3中,我有package.module.AuthError而不是AuthError
有没有办法匹配这两个版本?似乎IGNORE_EXCEPTION_DETAIL在这里没有作用。
1个回答

9
这个问题是由于相关问题的一个补丁意外破坏了它: IGNORE_EXCEPTION_DETAIL应该忽略模块名称,你看到的意外行为在这里是一个未解决的问题: doctest.IGNORE_EXCEPTION_DETAIL在没有详细信息时不匹配。所以这是一个错误,根据我的看法。这保证了它将被修复,因为我一开始就写了 doctest ; - ) 在此期间,您可能需要尝试附加到第二个错误报告的补丁。跟进:昨晚我检查了这个修复程序,它将出现在Pythons 2.7、3.3和3.4的下一个版本中。感谢提醒 :)

在注释中不是需要一个“doctest:”前缀吗?还是说这些是多余的?至少在这里的所有示例中都包含它们:http://docs.python.org/3.2/library/doctest.html#doctest.IGNORE_EXCEPTION_DETAIL - Robert Jørgensgaard Engdahl
@RobertJørgensgaardEngdahl,是的,doctest:是必需的。我跳过了它,因为那不是Nikolay问题的真正重点 - 即使指令拼写正确,他描述的行为也会发生。;-) - Tim Peters

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