首页 > 编程笔记 > Python笔记 > Python文档和测试
Python doctest模块:文档测试(超级详细)
前面章节不止一次讲到,Python 支持给函数、类以及类方法添加说明性文档,并提供 help() 函数和 __doc__ 属性获取指定成员的说明文档。例如:
在函数、类或类方法的说明性文档中,以
因此,在执行 doctest.testmod() 函数时,它会执行该模块中各成员说明性文档包含的测试代码,并将执行结果和指定的结果做比对,如果一致,则什么也不输出;反之,则输出以下提示信息:
def display(add): ''' 这是一个函数 ''' print(add) class my_cla: ''' 这是一个类 ''' def say(self,add): ''' 这是一个类实例方法 ''' print(add) help(display)程序输出结果为:
Help on function display in module __main__:
display(add)
这是一个函数
在函数、类或类方法的说明性文档中,以
>>>
作为开始的内容就表示一行测试代码,并且接下来的一行则明确该测试代码的输出结果,以上面程序为例,为 display() 函数添加测试代码如下:
'''
这是一个函数
>>> display("https://www.xinbaoku.com/python/")
https://www.xinbaoku.com/python/
>>> display("https://www.xinbaoku.com/java/")
https://www.xinbaoku.com/java/
'''
import doctest def display(add): ''' 这是一个函数 >>> display("https://www.xinbaoku.com/python/") https://www.xinbaoku.com/python/ >>> display("https://www.xinbaoku.com/java/") https://www.xinbaoku.com/java/ ''' print(add) class my_cla: ''' 这是一个类 >>> myClass = my_cla() >>> myClass.say("https://www.xinbaoku.com/shell/") https://www.xinbaoku.com/shell/ >>> myClass.say("https://www.xinbaoku.com") abc ''' 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("https://www.xinbaoku.com")
Expected:
abc
Got:
https://www.xinbaoku.com
**********************************************************************
1 items had failures:
1 of 3 in __main__.my_cla
***Test Failed*** 1 failures.
因此,在执行 doctest.testmod() 函数时,它会执行该模块中各成员说明性文档包含的测试代码,并将执行结果和指定的结果做比对,如果一致,则什么也不输出;反之,则输出以下提示信息:
- 显示在哪个源文件的哪一行。
- Failed example,显示是哪个测试用例出错了。
- Expected,显示程序期望的输出结果。也就是在“>>>命令”的下一行给出的运行结果,它就是期望结果。
- Got,显示程序实际运行产生的输出结果。只有当实际运行产生的输出结果与期望结果一致时,才表明该测试用例通过。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算