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 相关文章推荐
Python中使用多进程来实现并行处理的方法小结
Aug 09 Python
深入理解Python中range和xrange的区别
Nov 26 Python
Django中的Signal代码详解
Feb 05 Python
Django后台获取前端post上传的文件方法
May 28 Python
python和pygame实现简单俄罗斯方块游戏
Feb 19 Python
python+numpy+matplotalib实现梯度下降法
Aug 31 Python
flask session组件的使用示例
Dec 25 Python
python中如何使用insert函数
Jan 09 Python
wxPython修改文本框颜色过程解析
Feb 14 Python
为什么说python更适合树莓派编程
Jul 20 Python
Python 实现国产SM3加密算法的示例代码
Sep 21 Python
Python基于Socket实现简易多人聊天室的示例代码
Nov 29 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生成验证码时“图像因其本身有错无法显示”的解决方法
2013/08/07 PHP
php+mysql查询优化简单实例
2015/01/13 PHP
PHP7匿名类用法分析
2016/09/26 PHP
php+ajax简单实现全选删除的方法
2016/12/06 PHP
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
2010/10/14 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
把input初始值不写value的具体实现方法
2013/07/04 Javascript
js实现的map方法示例代码
2014/01/13 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
利用Vue实现移动端图片轮播组件的方法实例
2017/08/23 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
2020/11/18 Vue.js
javascript实现电商放大镜效果
2020/11/23 Javascript
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
[01:24:34]2014 DOTA2华西杯精英邀请赛5 24 DK VS LGD
2014/05/25 DOTA
[41:41]TFT vs Secret Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python实现的快速排序算法详解
2017/08/01 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
2018/03/22 Python
python实现自动登录后台管理系统
2018/10/18 Python
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
英国的知名精品百货公司:House of Fraser(福来德)
2016/08/14 全球购物
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
FirstCry阿联酋儿童和婴儿产品网上购物:FirstCry.ae
2021/02/22 全球购物
SQL注入攻击的种类有哪些
2013/12/30 面试题
蔬菜基地的创业计划书
2014/01/06 职场文书
在校生自我鉴定
2014/01/23 职场文书
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
先进工作者获奖感言
2014/02/08 职场文书
心理健康课教学反思
2014/02/13 职场文书
业务员自荐信范文
2014/04/20 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
行政复议答复书
2015/07/01 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书
python3.9之你应该知道的新特性详解
2021/04/29 Python
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python