doctest使用上の注意点--省略記号の使用
1952 ワード
今日doctestテストdefaultdictを行ったところ、shellに問題はないことがわかりましたが、doctestはExceptionを投げ出すことになりました
テストコード
実行結果
defaultdictのファクトリ関数アドレスが異なることが分かったためdoctestエラーが発生しました
解決策は省略記号(…)で関数アドレスを省略すればよい
新しいテストコード
テストコード
# -*- coding: utf-8 -*-
from collections import defaultdict
def tree():
"""
>>> t = tree()
>>> t["person"]["name"] = "fk"
>>> t["person"]["age"] = 24
>>> t["person"]
defaultdict(<function tree at 0x01239D70>, {'age': 24, 'name': 'fk'})
>>> t["person"]["name"]
'fk'
"""
return defaultdict(tree)
if __name__ == "__main__":
import doctest
doctest.testmod()
実行結果
Failed example:
t["person"]
Expected:
defaultdict(<function tree at 0x01239D70>, {'age': 24, 'name': 'fk'})
Got:
defaultdict(<function tree at 0x00BFFEB0>, {'age': 24, 'name': 'fk'})
**********************************************************************
defaultdictのファクトリ関数アドレスが異なることが分かったためdoctestエラーが発生しました
解決策は省略記号(…)で関数アドレスを省略すればよい
新しいテストコード
# -*- coding: utf-8 -*-
from collections import defaultdict
def tree():
"""
>>> t = tree()
>>> t["person"]["name"] = "fk"
>>> t["person"]["age"] = 24
>>> t["person"]
defaultdict(<function tree at ...>, {'age': 24, 'name': 'fk'})
>>> t["person"]["name"]
'fk'
"""
return defaultdict(tree)
if __name__ == "__main__":
import doctest
doctest.testmod(optionflags=doctest.ELLIPSIS)
# , defaultdict , doctest ,
# :doctest.testmod(optionflags=doctest.ELLIPSIS)