doctest是python自带的一个模块,你可以把它叫做“文档测试”(doctest)模块。

doctest的使用有两种方式:一个是嵌入到python源中。另一个是放到一个独立文件。

doctest的概念模型:

Module doctest - 一个在docstrings中运行示例的框架。
 
在最简单的使用中,结束每个要测试的模块M:
 
def _test():
    导入doctest
    doctest.testmod()
 
如果__name__ ==“__main__”:
    _测试()
 
然后将该模块作为脚本运行将导致在
docstrings得到执行和验证:
 
python M.py
 
这将不会显示任何东西,除非一个例子失败,在这种情况下
失败的例子和失败的原因被打印到标准输出
(为什么不stderr?因为stderr是一个蹩脚的黑客<0.2.wink>),以及最后的
输出行是“测试失败”。
 
改为使用-v开关运行它:
 
python M.py -v
 
并将所有尝试的示例的详细报告一起打印到stdout
并在最后提供各种摘要。
 
您可以通过将“verbose = True”传递给testmod来强制详细模式,或禁止
它通过传递“verbose = False”。在任何一种情况下,sys.argv都不是
由testmod检查。
 
有多种其他方式可以运行doctests,包括集成
使用unittest框架,并支持运行非Python文本
包含doctests的文件。还有很多方法可以覆盖零件
doctest的默认行为

doctest潜入源码中:

例子:

用doctext测试一个Dict类:

#mydit.py

class Dict(dict):

  ,,,

  simple dict but also support access as x.y style.

  >>> d1 = Dict()

  >>> d1['x'] = 100

  >>> d1.x

  100

  >>> d1.y=200

  >>> d1['y']

  200

  >>> d2 = Dict(a=1,b=2,c='3')

  >>> d2.c

  '3'

  >>> d2['empty']

  Traceback (most recent call last):

    ...

  KeyError:'empty'

  >>> d2.empty

  Traceback(most recent call last):

    ...

  AttributeError: 'Dict' object has no attribute 'empty'

  '''

  def __init__(self,**kw):

    super(Dict,self).__init__(**kw)

  def _getattr_(self,key):

    try:

      return self[key]

    except KeyError:

      raise AttributeError(r"'Dict' object has no attribute '%s'"%key)

  def _setattr_(self,key,value):

    self[key] = value

if __name__=='_main_':

  import doctest

  docest.testmod()

doctest严格按照python交互式命令行的输入和输出来判断测试结果是否正确。只有测试异常的时候,可以用...表示中间的一大段烦人的输出。

运行python mydict.py:

$ python mydict.py

什么输出也没有。这说明我们编写的doctest运行都是正确的。

独立文件模式

如果不想或不能把测试用例写进源代码里,则还可以使用一个独立的文本文件来保存测试用例。

将doctest从测试用例:

def multiply(a, b): """ >>> multiply(4, 3) 12 >>> multiply('a', 3) 'aaa' """ return a * b if __name__=='__main__': import doctest doctest.testmod(verbose=True)放到test_unnecessary_math.txt文件里。1 这个例子展示如何将doctest用例放到一个独立的文件中。2 '>>>'开头的行就是doctest测试用例。3 不带'>>>'的行就是测试用例的输出。4 如果实际运行的结果与期望的不一致,就标记为测试失败。

>>> from unnecessary_math import mutiply>>> mutiply(3,4)12>>>mutiply('a',3)'aaa'注意: from 那一行也要以>>>开头 在系统的shell中执行:python -m doctest -v test_unncessary_math.txt

  

      

转载于:https://www.cnblogs.com/whrTC/p/9149997.html

python之doctest的用法相关推荐

  1. 详细记录python的range()函数用法

    详细记录python的range()函数用法 使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的sl ...

  2. python Pool常用函数用法总结

    在本篇内容里小编给大家整理的是一篇关于python Pool常用函数用法总结内容,有需要的朋友们可以学习下. 1.说明 apply_async(func[,args[,kwds]):使用非堵塞调用fu ...

  3. python HDF5 h5py 的用法

    python HDF5 h5py 的用法 核心概念 HDF5文件是包含两种对象的容器:数据集,它们是类似数组的数据集合:组,是类似文件夹的容器,用于存放数据集和其他组.使用h5py时要记住的最基本的事 ...

  4. 五分钟理解yield在python中的简单用法,让你不再迷惑

    很多同学无论是在学习python还是使用python的过程中,都会遇到yield关键字,这个让人头大的问题,今天,就给大家分享一下我自学yield的心路历程 基本概念: (1)在 Python 中,使 ...

  5. python正则表达式re.sub用法

    python正则表达式re.sub用法 https://cloud.tencent.com/developer/article/1382055 python正则表达式re.sub用法 全面的 http ...

  6. Python 异常处理--raise函数用法

    Python 异常处理--raise函数用法 参考文章: (1)Python 异常处理--raise函数用法 (2)https://www.cnblogs.com/darkgui34/p/405074 ...

  7. format函数python的顺序_[转载] Python中format函数用法

    Python中format函数用法 format优点 format是python2.6新增的格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能 ...

  8. python ord()与chr()用法以及区别

    python ord()与chr()用法以及区别 原文:http://blog.csdn.net/yulock/article/details/52904035 ord()函数主要用来返回对应字符的a ...

  9. java和python可以在一个项目中同时使用么-java调用python的几种用法(看这篇就够了)...

    java调用python的几种用法如下: 在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐 ...

最新文章

  1. python全栈开发笔记---------函数
  2. 微软亚洲研究院副院长刘铁岩:以计算之矛攻新冠之盾
  3. 基于蔡氏混沌电路进行非线性共振探究
  4. 解读Cardinality Estimation算法(第一部分:基本概念)
  5. maven GroupId 和ArtifactId的含义
  6. 我是这样分析Linux性能问题的
  7. python网页提交表单_用Python的urllib库提交WEB表单
  8. r420 raid linux,Dell R420 RAID建立以及系统安装
  9. 2114. 句子中的最多单词数
  10. linux系统c语言编译icpc,ACM-ICPC 比赛环境的使用
  11. ipmitool配置管理网络
  12. c语言二十四点算法,本文实例为大家分享了C语言经典24点算法的具体实现代码,供大家参考,具体内容如下1、概述  给定4个整数,其中每个数字只能使用一次;任意使用 + - * /...
  13. 学在信息——初窥门径
  14. android 环信集成demo,集成环信即时通讯(导入demo到AndroidStudio)
  15. xcopy 跳过已经存在的_虚拟网红卖真衣服,真实人类已经开始买“假”衣服了!...
  16. 山东专升本-计算机课堂笔记之第一章 信息技术与计算机文化(一)
  17. oracle备份数据库dmp定时,SCO Unix系统下定时备份Oracle数据库dmp文件的设置
  18. Mac系统打不开appstore怎么办
  19. 实现nginx的https 功能报错:
  20. 从一维卷积、因果卷积(Causal CNN)、扩展卷积(Dilation CNN) 到 时间卷积网络 (TCN)

热门文章

  1. ko学习二,绑定语法
  2. BZOJ1026[SCOI2009]windy数
  3. caffe实现GAN
  4. 面向对象(程序员最呆的地方,一切皆是对象)
  5. ACM程序设计选修课——1036: Hungar的菜鸟赛季(YY)
  6. LINQ SQL分组取最近一条记录
  7. linux比较两个目录的差异
  8. Sql Server2005 Transact-SQL 新兵器学习总结之-PIVOT和UNPIVOT运算符
  9. 苹果公司发布TestFlight Groups,放宽二进制版本提交限制
  10. 双机热备篇 VRRP与VGMP的故事(2)