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