我在模块SpamException
中定义了一个异常类spam
。现在我想测试一个函数spam_function
,它引发了这个异常。所以我写了下面的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?
答案 0 :(得分:7)
我会打开doctest.IGNORE_EXCEPTION_DETAIL
指令,如下所示:
>>> spam_function() # doctest: +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last)
...
SpamException: 'lovely spam'
但请注意,IGNORE_EXCEPTION_DETAIL
不适用于普通异常对象(没有关联的参数)。特别是,以下示例不能移植到Python 3,因为在例外名称后面没有任何内容:
>>> spam_function() # doctest: +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last)
...
SpamException