三言两语聊Python模块–文档测试模块doctest
doctest是属于测试模块里的一种,对注释文档里的示例进行检测。
给出一个例子:
splitter.pydef split(line, types=None, delimiter=None):"""Splits a line of test and optionally performs type conversion.For example:>>> split('GOOD 100 490.50')['GOOD', '100', '490.50']>>> split('GOOD 100 490.50', [str, int, float])['GOOD', 100, 490.50]>>>By default, splitting is perfomed on whitespace, but a different delimitercan be selected with the delimiter keyword argument:>>> split('GOOD, 100, 490.50', delimiter=',')['GOOOD', '100', '490.50']>>>"""fields = line.split(delimiter)if types:fields = [ty(val) for ty, val in zip(types, fields)]return fields
可以有2种方式来使用doctest:
- 第一种,单独建一个脚本来测试。
testsplitter.py# testsplitter.py import splitter import doctestnfail, ntests = doctest.testmod(splitter, verbose=True)
运行结果:
Result>>> ********************************************************************** File "C:/Users/Administrator/Desktop/Python Scripts\splitter.py", line 8, in splitter.split Failed example:split('GOOD 100 490.50', [str, int, float]) Expected:['GOOD', 100, 490.50] Got:['GOOD', 100, 490.5] ********************************************************************** File "C:/Users/Administrator/Desktop/Python Scripts\splitter.py", line 14, in splitter.split Failed example:split('GOOD, 100, 490.50', delimiter=',') Expected:['GOOOD', '100', '490.50'] Got:['GOOD', ' 100', ' 490.50'] ********************************************************************** 1 items had failures:2 of 3 in splitter.split ***Test Failed*** 2 failures. >>>
这样注意一点,这个比对是严格比对,所以490.50和490.5是不同的。
doctest.testmod还可以带一个参数使用,显示更为详细的结果
nfail, ntests = doctest.testmod(splitter, verbose=True)
Result2>>> Trying:split('GOOD 100 490.50') Expecting:['GOOD', '100', '490.50'] ok Trying:split('GOOD 100 490.50', [str, int, float]) Expecting:['GOOD', 100, 490.50] ********************************************************************** File "C:/Users/Administrator/Desktop/Python Scripts\splitter.py", line 8, in splitter.split Failed example:split('GOOD 100 490.50', [str, int, float]) Expected:['GOOD', 100, 490.50] Got:['GOOD', 100, 490.5] Trying:split('GOOD, 100, 490.50', delimiter=',') Expecting:['GOOOD', '100', '490.50'] ********************************************************************** File "C:/Users/Administrator/Desktop/Python Scripts\splitter.py", line 14, in splitter.split Failed example:split('GOOD, 100, 490.50', delimiter=',') Expected:['GOOOD', '100', '490.50'] Got:['GOOD', ' 100', ' 490.50'] 1 items had no tests:splitter ********************************************************************** 1 items had failures:2 of 3 in splitter.split 3 tests in 2 items. 1 passed and 2 failed. ***Test Failed*** 2 failures. >>>
- 第二种,使用__name__ == ‘__main__’: (大部分好像都使用这种的)
splitter2.py# splitter.py def split(line, types=None, delimiter=None):"""Splits a line of test and optionally performs type conversion.For example:>>> split('GOOD 100 490.50')['GOOD', '100', '490.50']>>> split('GOOD 100 490.50', [str, int, float])['GOOD', 100, 490.50]>>>By default, splitting is perfomed on whitespace, but a different delimitercan be selected with the delimiter keyword argument:>>> split('GOOD, 100, 490.50', delimiter=',')['GOOOD', '100', '490.50']>>>"""fields = line.split(delimiter)if types:fields = [ty(val) for ty, val in zip(types, fields)]return fieldsif __name__ == '__main__':# test myselfimport doctestdoctest.testmod()
结果是一样的:
Result3********************************************************************** File "C:/Users/Administrator/Desktop/Python Scripts/splitter.py", line 8, in __main__.split Failed example:split('GOOD 100 490.50', [str, int, float]) Expected:['GOOD', 100, 490.50] Got:['GOOD', 100, 490.5] ********************************************************************** File "C:/Users/Administrator/Desktop/Python Scripts/splitter.py", line 14, in __main__.split Failed example:split('GOOD, 100, 490.50', delimiter=',') Expected:['GOOOD', '100', '490.50'] Got:['GOOD', ' 100', ' 490.50'] ********************************************************************** 1 items had failures:2 of 3 in __main__.split ***Test Failed*** 2 failures.
转载于:https://www.cnblogs.com/herbert/p/3244499.html
三言两语聊Python模块–文档测试模块doctest相关推荐
- Python之文档测试
0 参考文档 Sphinx--自动生成Python文档 Python之文档测试模块--doctest 1 doctest doctest是python自带的一个模块.doctest有两种使用方式:一种 ...
- python/单元测试-文档测试
文章目录 单元测试 __setattr__ 运行单元测试: setUp与tearDown 练习:对Student类编写单元测试,结果发现测试不通过,请修改Student类,让测试通过: 文档测试 单元 ...
- python scipy模块文档_scipy模块stats文档
https://github.com/yiyuezhuo/scipy.stats-doc-ch https://docs.scipy.org/doc/scipy/reference/tutorial/ ...
- python3模块文档_Python3模块-Python入门到精通
模块 模块是一个包含所有定义的函数和变量的文件,其后缀名是 .py .模块可以被别的程序引入,以调用该模块中的函数等功能.这也是使用 python 标准库的方法. import 语句 想要引用模块,只 ...
- python 错误、调试、单元测试、文档测试
错误分为程序的错误和由用户错误的输入引起的错误,此外还有因为各种各样意外的情况导致的错误,比如在磁盘满的时候写入.从网络爬取东西的时候,网络断了.这类错误称为异常 错误处理 普通的错误处理机制就是在出 ...
- python测试开发教程_文档测试
如果你经常阅读Python的官方文档,可以看到很多文档都有示例代码.比如re模块就带了很多示例代码: >>> import re >>> m = re.search ...
- Python单元测试、Python文档测试
Python语言基础(单元测试–对函数进行测试)(熟练) 概述: 单元测试: 用来对一个函数,一个类或者一个模块来进行一个正确性的校验工作 结果: 1.单元测试通过:说明测试的函数功能正常 2.单元测 ...
- python文档测试_【Python入门】19.调试器pdb、单元测试unittest和文档测试doctest
笔记更新于2019年12月4日, 摘要:各种调试方法介绍assert.logging.调试器pdb:单元测试unittest的编写方法.如何运行单元测试:文档测试doctest的编写 写在前面:为了更 ...
- python学习-测试(文档测试 doctest、单元测试 unittest)
文章目录 文档测试 单元测试 文档测试 doctest:一个简单的模块,为检查文档而设计,但也适合用来编写单元测试. def func(a, b):"""doc test ...
- python 帮助文档、自我解释
现在让我们以交互方式使用 Python 来开始研究.当我们从命令行启动 Python 时,就进入了 Python shell,在这里可以输入 Python 代码,而且立刻会从 Python 解释器获得 ...
最新文章
- C++知识点23——使用C++标准库(顺序容器list的其他操作)
- c语言中常用的预处理命令6,C语言的预处理命令
- ABAP string函数一览
- linux进度条脚本,Linux下简易进度条的实现代码
- 338. 比特位计数 golang
- 百度链接提交php获取状态码,新网站,在百度提交了首页链接,但是一直没有收录,也没有爬虫抓取,怎么回事呢?(悬赏1元) - 搜外SEO问答...
- Java 中单引号和双引号的区别
- php读取js为文本,PHP / JS文本差异
- python结构体数组传出接收c动态库_使用Python向C语言的链接库传递数组、结构体、指针类型的数据...
- pyqt5-两个窗口之间相互显示隐藏
- 27. 使用distance和advance将容器的const_iterator转换成iterator
- python计算金星凌日
- 记录ESP32 出现未定义vTaskGetRunTimeStats的奔溃时刻!
- php函数参数中括号,thinkphp手册中函数的可选参数的中括号为什么是包含的关系?...
- ANSI C标准库和POSIX库
- 1.6 Scala代码风格
- 【机器视觉】移动机器人控制软件的设计与实现
- 统计表中百分比的表示方法
- asm.js 和 WebAssembly 有什么区别?
- 基于tensorflow2.0+CNN实现手势识别(全)