我在模块中定义了一个异常类。现在,我想测试一个引发这个异常的函数。所以我写了下面的博士论文。

>>> 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

07-28 02:11
查看更多