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中还原JavaScript的escape函数编码后字符串的方法
Aug 22 Python
python常规方法实现数组的全排列
Mar 17 Python
Python新手在作用域方面经常容易碰到的问题
Apr 03 Python
在Python中用keys()方法返回字典键的教程
May 21 Python
Python正则表达式教程之二:捕获篇
Mar 02 Python
Python3中bytes类型转换为str类型
Sep 27 Python
破解安装Pycharm的方法
Oct 19 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
Jan 11 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
Jul 03 Python
python getpass模块用法及实例详解
Oct 07 Python
Python图像处理二值化方法实例汇总
Jul 24 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
重料打造自己的“宝马”---第三代
2021/03/02 无线电
从手册去理解分析PHP session机制
2011/07/17 PHP
PHP 下载文件时自动添加bom头的方法实例
2014/01/10 PHP
php微信开发之谷歌测距
2018/06/14 PHP
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
js实现input框文字动态变换显示效果
2015/08/19 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
2015/11/23 Javascript
jQuery实现的左右移动焦点图效果
2016/01/14 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
create-react-app修改为多页面支持的方法
2018/05/17 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
[01:35:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第一场 1月18日
2021/03/11 DOTA
Python logging模块学习笔记
2014/05/24 Python
Python彩色化Linux的命令行终端界面的代码实例分享
2016/07/02 Python
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
利用Python正则表达式过滤敏感词的方法
2019/01/21 Python
python实现给微信指定好友定时发送消息
2019/04/29 Python
Python找出列表中出现次数最多的元素三种方式
2020/02/24 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
浅谈Python中的模块
2020/06/10 Python
python 爬取免费简历模板网站的示例
2020/09/27 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
2020/10/09 Python
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
公司晚会主持词
2014/03/22 职场文书
大连星海广场导游词
2015/02/10 职场文书
楚门的世界观后感
2015/06/03 职场文书
python垃圾回收机制原理分析
2022/04/13 Python