6
我在模块spam
中定义了异常类SpamException
。现在我想测试一个函数spam_function
,这引发了这个异常。所以我写了下面的doctest。如何在Python 2.x和3.x中使用doctest测试异常?
>>> spam_function()
Traceback (most recent call last):
....
SpamException
测试在Python 2.x上成功,但在Python 3.x上测试失败。以下测试适用于Python 3.x.
>>> spam_function()
Traceback (most recent call last):
....
spam.SpamException
这里值得注意的区别是模块名称包含在例外名称中。那么,我该如何编写一个适用于Python 2.x和3.x的doctest呢?
当添加'#文档测试我没有任何通知而变动:+ IGNORE_EXCEPTION_DETAIL',即它保持与任何失败Python版本。你能添加一个完整的例子吗? –
只要有问题的异常类有一个返回非空字符串的__str__方法,'IGNORE_EXCEPTION_DETAIL'就会工作。然后,只有最后的异常行才有冒号,这是指令工作所必需的。 –
看来,IGNORE_EXCEPTION_DETAIL也会忽略异常消息,这会消除文档测试这些行为的很大一部分目的。但是异常类型仍然被检查。 ouf! – vaab