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字符串方法的简单使用
Jul 18 Python
python魔法方法-属性转换和类的表示详解
Jul 22 Python
Python:Scrapy框架中Item Pipeline组件使用详解
Dec 27 Python
详谈pandas中agg函数和apply函数的区别
Apr 20 Python
Python删除n行后的其他行方法
Jan 28 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
Jul 04 Python
用python3 返回鼠标位置的实现方法(带界面)
Jul 05 Python
Python lambda表达式filter、map、reduce函数用法解析
Sep 11 Python
python 线性回归分析模型检验标准--拟合优度详解
Feb 24 Python
详解Python 最短匹配模式
Jul 29 Python
Python3.9新特性详解
Oct 10 Python
Python: glob匹配文件的操作
Dec 11 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
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
汇总PHPmailer群发Gmail的常见问题
2016/02/24 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
客户端 使用XML DOM加载json数据的方法
2010/09/28 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
详解jQuery插件开发中的extend方法
2013/11/19 Javascript
div浮层,滚动条移动,位置保持不变的4种方法汇总
2013/12/11 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
jQuery获得document和window对象宽度和高度的方法
2015/03/25 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
layui 优化button按钮和弹出框的方法
2018/08/15 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
2018/09/03 jQuery
[01:20:06]TNC vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Centos Python2 升级到Python3的简单实现
2016/06/21 Python
详解Python的collections模块中的deque双端队列结构
2016/07/07 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
python创建学生成绩管理系统
2019/11/22 Python
django框架两个使用模板实例
2019/12/11 Python
python新手学习可变和不可变对象
2020/06/11 Python
如何利用python读取micaps文件详解
2020/10/18 Python
GUESS西班牙官方网上商城:美国服饰品牌
2017/03/15 全球购物
大学生个人自我鉴定
2013/12/03 职场文书
食品安全工作实施方案
2014/03/26 职场文书
公安机关查摆剖析材料
2014/10/10 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
三八节活动简报
2015/07/20 职场文书
2016春季运动会前导词
2015/11/25 职场文书
2019新员工心得体会
2019/06/25 职场文书
公文写作指导之倡议书!
2019/07/03 职场文书
Win11查看设备管理器
2022/04/19 数码科技