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 相关文章推荐
400多行Python代码实现了一个FTP服务器
May 10 Python
Python脚本实现下载合并SAE日志
Feb 10 Python
Python函数式编程指南(一):函数式编程概述
Jun 24 Python
详解Python的Django框架中的模版继承
Jul 16 Python
Python基于递归实现电话号码映射功能示例
Apr 13 Python
浅谈python3发送post请求参数为空的情况
Dec 28 Python
Flask-WTF表单的使用方法
Jul 12 Python
快速解决docker-py api版本不兼容的问题
Aug 30 Python
解决Python中报错TypeError: must be str, not bytes问题
Apr 07 Python
Python OpenCV去除字母后面的杂线操作
Jul 05 Python
python 实现关联规则算法Apriori的示例
Sep 30 Python
实操Python爬取觅知网素材图片示例
Nov 27 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的异常处理类Exception的使用及说明
2012/06/13 PHP
php可应用于面包屑导航的递归寻找家谱树实现方法
2015/02/02 PHP
php中关于长度计算容易混淆的问题分析
2016/05/27 PHP
Laravel如何创建服务器提供者实例代码
2019/04/15 PHP
jQuery UI Dialog控件中的表单无法正常提交的解决方法
2010/12/19 Javascript
基于jquery的jqDnR拖拽溢出的修改
2011/02/12 Javascript
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
页面按钮禁用与解除禁用的方法
2014/02/19 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
jquery遍历table的tr获取td的值实现方法
2016/05/19 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
jQuery多个版本和其他js库冲突的解决方法
2016/08/11 Javascript
JavaScript获取服务器端时间的方法
2016/11/29 Javascript
js获取隐藏元素的宽高
2017/02/24 Javascript
AngularJS表格样式简单设置方法示例
2017/03/03 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
微信小程序视图容器(swiper)组件创建轮播图
2020/06/19 Javascript
微信小程序websocket聊天室的实现示例代码
2019/02/12 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
2019/12/29 Javascript
微信小程序wx.navigateTo方法里的events参数使用详情及场景
2020/01/07 Javascript
JS数组方法reverse()用法实例分析
2020/01/18 Javascript
uni-app从安装到卸载的入门教程
2020/05/15 Javascript
vue+swiper实现左右滑动的测试题功能
2020/10/30 Javascript
浅谈Ant Design Pro 菜单自定义 icon
2020/11/17 Javascript
Python内置函数的用法实例教程
2014/09/08 Python
如何将python中的List转化成dictionary
2016/08/15 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
人事任命书范文
2014/06/04 职场文书
雷峰塔导游词
2015/02/09 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang
pytorch交叉熵损失函数的weight参数的使用
2021/05/24 Python