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 相关文章推荐
两个命令把 Vim 打造成 Python IDE的方法
Mar 20 Python
Python实现 多进程导入CSV数据到 MySQL
Feb 26 Python
Django实现自定义404,500页面教程
Mar 26 Python
简单的python协同过滤程序实例代码
Jan 31 Python
Python实现统计给定列表中指定数字出现次数的方法
Apr 11 Python
Python装饰器用法实例总结
May 26 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
Jul 01 Python
Python实现最常见加密方式详解
Jul 13 Python
Django中的FBV和CBV用法详解
Sep 15 Python
使用Python实现画一个中国地图
Nov 23 Python
python pygame实现滚动横版射击游戏城市之战
Nov 25 Python
python非标准时间的转换
Jul 25 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中通过ADO调用Asscess数据库和COM程序
2006/10/09 PHP
php中定时计划任务的实现原理
2013/01/08 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
2013/06/24 PHP
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
基于JQuery的Pager分页器实现代码
2010/07/17 Javascript
再论Javascript下字符串连接的性能
2011/03/05 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
2013/11/14 Javascript
jquery购物车结算功能实现方法
2020/10/29 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
对angularjs框架下controller间的传值方法详解
2018/10/08 Javascript
JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去
2019/07/23 Javascript
VUE.CLI4.0配置多页面入口的实现
2019/11/25 Javascript
Python中最常用的操作列表的几种方法归纳
2015/04/24 Python
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
详解python中Numpy的属性与创建矩阵
2018/09/10 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
2019/01/24 Python
Python多线程处理实例详解【单进程/多进程】
2019/01/30 Python
Python实现插入排序和选择排序的方法
2019/05/12 Python
python 机器学习之支持向量机非线性回归SVR模型
2019/06/26 Python
python滑块验证码的破解实现
2019/11/10 Python
Pytorch evaluation每次运行结果不同的解决
2020/01/02 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
爱淘宝:淘宝网购物分享平台
2017/04/28 全球购物
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
深圳茁壮笔试题
2015/05/28 面试题
2014年村党支部工作总结
2014/12/04 职场文书
孝老爱亲事迹材料
2014/12/24 职场文书
婚礼答谢礼品
2015/01/20 职场文书
社区党支部公开承诺书
2015/04/29 职场文书
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android
python四种出行路线规划的实现
2021/06/23 Python
详解MongoDB的条件查询和排序
2021/06/23 MongoDB
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技