Python单元测试工具doctest和unittest使用解析


Posted in Python onSeptember 02, 2019

Python标准库包含两个测试工具。

doctest:一个简单的模块,为检查文档而设计,但也适合用来编写单元测试。

unittest:一个通用的测试框架。

一、使用doctest进行单元测试

创建文件mymath.py,内容

def square(x):
  '''
  计算平方并返回结果(下面是单元测试的格式)
  >>> square(2)
  >>> square(3)
  '''
  return x * x
if __name__ == '__main__':
  import doctest,mymath
  doctest.testmod(mymath)

在Sublime Text 3中运行只是提示[Finished in 0.2s]。

在cmd命令下切换到mymath.py所在目录,运行python mymath.py -v后,有提示测试详细信息,测试通过。如下图:

Python单元测试工具doctest和unittest使用解析

把函数square里面的return x * x 改成 return x / x。

再次运行python mymath.py -v,提示测试不通过,如下图:

Python单元测试工具doctest和unittest使用解析

二、使用unittest进行单元测试

还是用mymath.py测试,内容:

def square(x):  
  return x * x

新建单元测试文件test_math.py,内容:

import unittest, mymath
class mathTestCase(unittest.TestCase):  
  def test_square(self):    
    self.assertEqual(mymath.square(2), 4)
    self.assertEqual(mymath.square(3), 9)
if __name__ == '__main__':
  unittest.main()

运行后,显示OK 测试通过。

.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

把函数square里面的return x * x 改成 return x / x。

再次运行,这次显示FAILED 测试不通过。

F
======================================================================
FAIL: test_square (__main__.mathTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
 File "D:\projects\python\test_math.py", line 6, in test_square
  self.assertEqual(mymath.square(2), 4)
AssertionError: 1.0 != 4

----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (failures=1)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python3+PyQt5泛型委托详解
Apr 24 Python
python变量赋值方法(可变与不可变)
Jan 12 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
Jan 29 Python
详解pyppeteer(python版puppeteer)基本使用
Jun 12 Python
Appium+python自动化怎么查看程序所占端口号和IP
Jun 14 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
Aug 05 Python
Python高级特性 切片 迭代解析
Aug 23 Python
Python制作词云图代码实例
Sep 09 Python
Python生成词云的实现代码
Jan 14 Python
python有序查找算法 二分法实例解析
Feb 18 Python
基于python连接oracle导并出数据文件
Apr 28 Python
基于PyQT实现区分左键双击和单击
May 19 Python
Python操作SQLite数据库过程解析
Sep 02 #Python
Python实现生成密码字典的方法示例
Sep 02 #Python
python使用多线程编写tcp客户端程序
Sep 02 #Python
使用python实现离散时间傅里叶变换的方法
Sep 02 #Python
详解Python图像处理库Pillow常用使用方法
Sep 02 #Python
Django使用中间件解决前后端同源策略问题
Sep 02 #Python
python elasticsearch环境搭建详解
Sep 02 #Python
You might like
通过对服务器端特性的配置加强php的安全
2006/10/09 PHP
PHP中函数内引用全局变量的方法
2008/10/20 PHP
解析PHP无限级分类方法及代码
2013/06/21 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
PHP获取昨天、今天及明天日期的方法
2016/02/03 PHP
js 判断checkbox是否选中的操作方法
2012/11/09 Javascript
Javascript在IE和FireFox中的不同表现简析
2012/12/03 Javascript
AJAX跨域请求json数据的实现方法
2013/11/11 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
JS逆序遍历实现代码
2014/12/02 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
微信小程序 swiper组件详解及实例代码
2016/10/25 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
2017/04/14 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
微信小程序自定义带价格显示日历效果
2018/12/29 Javascript
js中null与空字符串""的区别讲解
2019/01/17 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
JavaScript Date对象功能与用法学习记录
2020/04/28 Javascript
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
python使用mysql数据库示例代码
2017/05/21 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
分享vim python缩进等一些配置
2018/07/02 Python
python实现海螺图片的方法示例
2019/05/12 Python
选择python进行数据分析的理由和优势
2019/06/25 Python
python获取txt文件词向量过程详解
2019/07/05 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
2020/03/24 Python
python使用多线程+socket实现端口扫描
2020/05/28 Python
晚归检讨书
2014/02/19 职场文书
工作表扬信范文
2015/01/17 职场文书
个人年度总结报告
2015/03/09 职场文书
爱护公物主题班会
2015/08/17 职场文书
Python Socket编程详解
2021/04/25 Python
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
2021/06/15 Javascript
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis
python绘制云雨图raincloud plot
2022/08/05 Python