Python doctest模块:文档测试(超级详细)
def display(add): 这是一个函数Help on function display in module __main__:
display(add)
这是一个函数但是,说明性文档的功能还远不止此,它还可以用来包含一些测试代码,以测试该成员(函数、类、类方法)的功能是否正确。值得一提的是,说明性文档中测试该成员的代码和实际调用该成员时使用的代码是一样的,只不过作为测试代码,它有特定的编写格式。
在函数、类或类方法的说明性文档中,以 作为开始的内容就表示一行测试代码,并且接下来的一行则明确该测试代码的输出结果,以上面程序为例,为 display() 函数添加测试代码如下:
这是一个函数display( http://c.biancheng.net/python/ )
http://c.biancheng.net/python/
display( http://c.biancheng.net/java/ )
http://c.biancheng.net/java/
可以看到,我们为 display() 函数添加了 2 个测试代码,并且指定了该函数应该输出的正确结果。在此基础上,如果想执行测试代码,还需借助 doctest 模块中的 testmod() 函数。例如,修改上面程序如下所示:
import doctest def display(add): 这是一个函数 display( http://c.biancheng.net/python/ ) http://c.biancheng.net/python/ display( http://c.biancheng.net/java/ ) http://c.biancheng.net/java/ print(add) class my_cla: 这是一个类 myClass = my_cla() myClass.say( http://c.biancheng.net/shell/ ) http://c.biancheng.net/shell/ myClass.say( http://c.biancheng.net ) def say(self,add): 这是一个类实例方法 print(add) doctest.testmod()可以看到,我们为 display() 函数以及 my_cla 类都添加了测试代码,同时还调用 doctest 模块中的 testmod() 函数。执行该程序,输出结果为:
**********************************************************************
File C:/Users/mengma/Desktop/demo.py , line 20, in __main__.my_cla
Failed example:
myClass.say( http://c.biancheng.net )
Expected:
abc
Got:
http://c.biancheng.net
**********************************************************************
1 items had failures:
1 of 3 in __main__.my_cla
***Test Failed*** 1 failures.该输出结果中,仅显示了执行错误的测试代码,所谓执行错误,指的是规定的测试代码的输出结果和运行该测试代码时的输出结果不一致。显然,对于上面所有的测试代码中,当调用 my_cls.say( http://c.bianchegn.net ) 时,正常就应该输出 http://c.biancheng.net 这个字符串,而不应该输出 abc ,这里仅是为了让读者看到使用 doctest.testmod() 函数的效果。
因此,在执行 doctest.testmod() 函数时,它会执行该模块中各成员说明性文档包含的测试代码,并将执行结果和指定的结果做比对,如果一致,则什么也不输出;反之,则输出以下提示信息:
Expected,显示程序期望的输出结果。也就是在 命令 的下一行给出的运行结果,它就是期望结果。 Got,显示程序实际运行产生的输出结果。只有当实际运行产生的输出结果与期望结果一致时,才表明该测试用例通过。
相关文章
- python用pycharm还是vscode_pycharm自带python吗
- aic准则python_Python数据科学:线性回归
- python常用面试题_Python+Selenium 常见面试题整理[通俗易懂]
- python整除和取余写法_Python的整除和取余[通俗易懂]
- 陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯
- python基础系列教程——Python的安装与测试:python解释器、PyDev编辑器、pycharm编译器
- 【说站】python中lstrip()截掉字符
- 正则表达式Python_python正则表达式匹配字符串
- python绘制条形柱状图_Python柱状图
- python自动化测试—Python自动化框架及工具
- Python内置(7)map、聚合、iter、迭代方法、slice
- 用Python写了一个合同帐务系统(附源码)
- Python 实现Ping命令状态检测
- python-Python与SQLite数据库-处理SQLite查询结果(二)
- python-Python与MongoDB数据库-MongoDB数据库的基本知识
- python-Django-Django 常用模板标签和过滤器(二)
- 利用xlrd模块实现Python读取Excel文档详解编程语言
- Python 基于python实现的http+json协议接口自动化测试框架源码(实用改进版)详解编程语言
- 在Linux上搭建Python开发环境(linux搭建python环境)
- Python如何使用MySQL构建立连接(python怎么连接mysql)