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的Django框架中if标签的相关使用
Jul 15 Python
python Celery定时任务的示例
Mar 13 Python
python sklearn常用分类算法模型的调用
Oct 16 Python
python获取引用对象的个数方式
Dec 20 Python
在Tensorflow中查看权重的实现
Jan 24 Python
python画图常规设置方式
Mar 05 Python
如何搭建pytorch环境的方法步骤
May 06 Python
python对接ihuyi实现短信验证码发送
May 10 Python
Python使用20行代码实现微信聊天机器人
Jun 05 Python
Python实现一个简单的递归下降分析器
Aug 01 Python
详解torch.Tensor的4种乘法
Sep 03 Python
详解Python Celery和RabbitMQ实战教程
Jan 20 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 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
PHP基于CURL进行POST数据上传实例
2014/11/10 PHP
php实现curl模拟ftp上传的方法
2015/07/29 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
jquery.form.js用法之清空form的方法
2014/03/07 Javascript
JS函数重载的解决方案
2014/05/13 Javascript
js实现按钮控制图片360度翻转特效的方法
2015/02/17 Javascript
AngularJS学习第一篇 AngularJS基础知识
2017/02/13 Javascript
vue 引入公共css文件的简单方法(推荐)
2018/01/20 Javascript
vue自动化表单实例分析
2018/05/06 Javascript
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
2019/12/30 jQuery
jquery添加div实现消息聊天框
2020/02/08 jQuery
JavaScript代理模式原理与用法实例详解
2020/03/10 Javascript
Python使用urllib2模块实现断点续传下载的方法
2015/06/17 Python
Python Property属性的2种用法
2015/06/21 Python
Python通过命令开启http.server服务器的方法
2017/11/04 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
Python批量生成特定尺寸图片及图画任意文字的实例
2019/01/30 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
python基于json文件实现的gearman任务自动重启代码实例
2019/08/13 Python
Python 变量的创建过程详解
2019/09/02 Python
python 利用已有Ner模型进行数据清洗合并代码
2019/12/24 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
铭万公司.net面试题笔试题
2014/07/20 面试题
北京某科技有限公司C# .net笔试题
2014/09/27 面试题
营销与策划专业毕业生求职信
2013/11/01 职场文书
教师工作总结范文2014
2014/11/10 职场文书
《角的初步认识》教学反思
2016/02/17 职场文书
导游词之平津战役纪念馆
2019/11/04 职场文书