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 21 Python
跟老齐学Python之画圈还不简单吗?
Sep 20 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
Apr 11 Python
简单了解Python中的几种函数
Nov 03 Python
神经网络相关之基础概念的讲解
Dec 29 Python
Python实现使用request模块下载图片demo示例
May 24 Python
linux下python中文乱码解决方案详解
Aug 28 Python
PyQt5中向单元格添加控件的方法示例
Mar 24 Python
全网首秀之Pycharm十大实用技巧(推荐)
Apr 27 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
May 26 Python
Python selenium键盘鼠标事件实现过程详解
Jul 28 Python
Python使用Kubernetes API访问集群
May 30 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
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
php var_export与var_dump 输出的不同
2013/08/09 PHP
Symfony2创建页面实例详解
2016/03/18 PHP
Yii编程开发常见调用技巧集锦
2016/07/15 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
数据结构之利用PHP实现二分搜索树
2020/10/25 PHP
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
利用div+jquery自定义滚动条样式的2种方法
2013/07/18 Javascript
jquery中$.post()方法的简单实例
2014/02/04 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
浅谈JS原型对象和原型链
2016/03/02 Javascript
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
vue项目中播放rtmp视频文件流的方法
2020/09/17 Javascript
[54:51]Ti4 冒泡赛第二轮LGD vs C9 3
2014/07/14 DOTA
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
Python将string转换到float的实例方法
2019/07/29 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
2019/07/31 Python
如何在Python对Excel进行读取
2020/06/04 Python
python代码中怎么换行
2020/06/17 Python
Python3基于plotly模块保存图片表格
2020/08/03 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
HTML5单页面手势滑屏切换原理
2016/03/21 HTML / CSS
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
自我鉴定怎么写
2013/12/05 职场文书
房产委托公证书样本
2014/04/04 职场文书
入股协议书范本
2014/04/14 职场文书
小学生环保演讲稿
2014/04/25 职场文书
三方股东合作协议书
2014/10/28 职场文书
致三级跳运动员加油稿
2015/07/21 职场文书
六年级情感作文之500字
2019/10/23 职场文书
一文了解MySQL二级索引的查询过程
2022/02/24 MySQL