我在模块中定义了一个异常类。现在,我想测试一个引发这个异常的函数。所以我写了下面的博士论文。
>>> 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呢?
最佳答案
我将打开doctest.IGNORE_EXCEPTION_DETAIL
指令,如下所示:
>>> spam_function() # doctest: +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last)
...
SpamException: 'lovely spam'
但是请注意,
IGNORE_EXCEPTION_DETAIL
不适用于纯异常对象(没有关联的参数)。尤其是,下面的示例不可移植到Python3,因为在异常名称后面没有任何内容:>>> spam_function() # doctest: +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last)
...
SpamException