python之doctest的用法
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的用法相关推荐
- 详细记录python的range()函数用法
详细记录python的range()函数用法 使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的sl ...
- python Pool常用函数用法总结
在本篇内容里小编给大家整理的是一篇关于python Pool常用函数用法总结内容,有需要的朋友们可以学习下. 1.说明 apply_async(func[,args[,kwds]):使用非堵塞调用fu ...
- python HDF5 h5py 的用法
python HDF5 h5py 的用法 核心概念 HDF5文件是包含两种对象的容器:数据集,它们是类似数组的数据集合:组,是类似文件夹的容器,用于存放数据集和其他组.使用h5py时要记住的最基本的事 ...
- 五分钟理解yield在python中的简单用法,让你不再迷惑
很多同学无论是在学习python还是使用python的过程中,都会遇到yield关键字,这个让人头大的问题,今天,就给大家分享一下我自学yield的心路历程 基本概念: (1)在 Python 中,使 ...
- python正则表达式re.sub用法
python正则表达式re.sub用法 https://cloud.tencent.com/developer/article/1382055 python正则表达式re.sub用法 全面的 http ...
- Python 异常处理--raise函数用法
Python 异常处理--raise函数用法 参考文章: (1)Python 异常处理--raise函数用法 (2)https://www.cnblogs.com/darkgui34/p/405074 ...
- format函数python的顺序_[转载] Python中format函数用法
Python中format函数用法 format优点 format是python2.6新增的格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能 ...
- python ord()与chr()用法以及区别
python ord()与chr()用法以及区别 原文:http://blog.csdn.net/yulock/article/details/52904035 ord()函数主要用来返回对应字符的a ...
- java和python可以在一个项目中同时使用么-java调用python的几种用法(看这篇就够了)...
java调用python的几种用法如下: 在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐 ...
最新文章
- python全栈开发笔记---------函数
- 微软亚洲研究院副院长刘铁岩:以计算之矛攻新冠之盾
- 基于蔡氏混沌电路进行非线性共振探究
- 解读Cardinality Estimation算法(第一部分:基本概念)
- maven GroupId 和ArtifactId的含义
- 我是这样分析Linux性能问题的
- python网页提交表单_用Python的urllib库提交WEB表单
- r420 raid linux,Dell R420 RAID建立以及系统安装
- 2114. 句子中的最多单词数
- linux系统c语言编译icpc,ACM-ICPC 比赛环境的使用
- ipmitool配置管理网络
- c语言二十四点算法,本文实例为大家分享了C语言经典24点算法的具体实现代码,供大家参考,具体内容如下1、概述 给定4个整数,其中每个数字只能使用一次;任意使用 + - * /...
- 学在信息——初窥门径
- android 环信集成demo,集成环信即时通讯(导入demo到AndroidStudio)
- xcopy 跳过已经存在的_虚拟网红卖真衣服,真实人类已经开始买“假”衣服了!...
- 山东专升本-计算机课堂笔记之第一章 信息技术与计算机文化(一)
- oracle备份数据库dmp定时,SCO Unix系统下定时备份Oracle数据库dmp文件的设置
- Mac系统打不开appstore怎么办
- 实现nginx的https 功能报错:
- 从一维卷积、因果卷积(Causal CNN)、扩展卷积(Dilation CNN) 到 时间卷积网络 (TCN)