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

  

      

python之doctest的用法的更多相关文章

  1. python 中del 的用法

    python中的del用法比较特殊,新手学习往往产生误解,弄清del的用法,可以帮助深入理解python的内存方面的问题. python的del不同于C的free和C++的delete. 由于pyth ...

  2. Python多进程并发(multiprocessing)用法实例详解

    http://www.jb51.net/article/67116.htm 本文实例讲述了Python多进程并发(multiprocessing)用法.分享给大家供大家参考.具体分析如下: 由于Pyt ...

  3. Python dictionary 字典 常用法

    Python dictionary 字典 常用法 d = {} d.has_key(key_in)       # if has the key of key_in d.keys()          ...

  4. 【python】 del 的用法

    转自 https://blog.csdn.net/love1code/article/details/47276683 python中的del用法比较特殊,新手学习往往产生误解,弄清del的用法,可以 ...

  5. Python Numpy shape 基础用法(转自他人的博客,如涉及到侵权,请联系我)

    Python Numpy shape 基础用法 shape函数是numpy.core.fromnumeric中的函数,它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度.它的输入 ...

  6. python中argparse模块用法实例详解

    python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...

  7. [转]使用python来操作redis用法详解

    转自:使用python来操作redis用法详解 class CommRedisBase(): def __init__(self): REDIS_CONF = {} connection_pool = ...

  8. python之模块py_compile用法(将py文件转换为pyc文件)

    # -*- coding: cp936 -*- #python 27 #xiaodeng #python之模块py_compile用法(将py文件转换为pyc文件):二进制文件,是由py文件经过编译后 ...

  9. python format()函数的用法

    Python format() 函数的用法 复制自博主 chunlaipiupiupiu 的博客,如有侵权,请联系删除 python中format函数用于字符串的格式化 通过关键字 1 print(' ...

随机推荐

  1. WCF:无法满足对安全令牌的请求,因为身份验证失败。

    服务端和客户端如果有认证的话的这样: <wsHttpBinding> <binding name="WSHttpBinding_IService1" closeT ...

  2. spring整合web的ssh(springMVC、hibernate)

    1. tomcat启动时,加载配置文件,将bean装在 导入jar包spring-web..jar 2.确定配置文件位置 3.spring整合hibernate <!-- 加载hibernate ...

  3. 零基础逆向工程33_Win32_07_创建线程

    1 什么是线程(Threads)? 什么是多线程? 怎么在windows中观察多线程? 线程可以简单理解为主程序为解决一个问题而选择的其中一条路线. 同理,多线程就是同时选择不同的路线来解决此问题. ...

  4. FAT12格式的引导区实现

    org 07c00h ;================================================ jmp short START nop ; 这个 nop 不可少 ;这个结构将 ...

  5. ASP.NET MVC 音乐商店 - 2.控制器

    在典型的 Web 应用中,用户请求的 URL 地址通常映射到保存在网站中的文件上,例如,当用户请求 /Products.aspx 的时候,或者 /Products.php 的时候,很可能是在通过处理 ...

  6. [MedicalEndoscope]PFC介绍

    PFC的英文全称为“Power Factor Correction”,意思是“功率因数校正”,功率因数指的是有效功率与总耗电量(视在功率)之间的关系,也就是有效功率除以总耗电量(视在功率)的比值. 基 ...

  7. isee图片专家批量处理图片大小教程

    经常用手机.照相机外出拍照片,然后再弄到电脑上面很占硬盘空间了,isee图片专家是一款非常专业的批量压缩图片大小工具,方便储存,给电脑减压,具有一次自动处理N张图片:程序小巧,资源占用低,处理速度快等 ...

  8. simotion读写CF卡,保存/读取变量

    simotion读写CF卡功能 1 使用西门子的Simotion运动控制器时,有时需要用到 读/写 CF卡的功能.主要来自以下几个方面的需求. 1)用户数据量较大,可保持(retain)存储区的容量不 ...

  9. 94. Binary Tree Inorder Traversal(inorder ) ***(to be continue)easy

    Given a binary tree, return the inorder traversal of its nodes' values. Example: Input: [1,null,2,3] ...

  10. HTML入门1—HTML基础学习

    html文档结构 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...