doctest使用注意点 -- 省略号的使用

今天进行doctest测试defaultdict时发现shell中没有问题,但是doctest就是抛出Exception

测试代码

# -*- 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)


转载于:https://my.oschina.net/1123581321/blog/204996

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值