6
例外クラスSpamException
をモジュールspam
に定義しました。今、この例外を発生させる関数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の3に移植性がありませんPythonバージョン。あなたは完全な例を追加できますか? –
'IGNORE_EXCEPTION_DETAIL'は、問題の例外クラスが空でない文字列を返す' __str__'メソッドを持つとすぐに動作します。次に、最後の例外行にはコロンが付いています。これはディレクティブが動作するために必要です。 –
IGNORE_EXCEPTION_DETAILは例外メッセージも無視しているようです。例外メッセージは、これらの動作のdoctestingの目的の大部分を取り除きます。しかし、例外タイプはまだチェックされています。おお! – vaab