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设计一个经典小游戏
May 15 Python
Python表示矩阵的方法分析
May 26 Python
定制FileField中的上传文件名称实例
Aug 23 Python
python3读取excel文件只提取某些行某些列的值方法
Jul 10 Python
使用python绘制温度变化雷达图
Oct 18 Python
Python3 中作为一等对象的函数解析
Dec 11 Python
python读取Kafka实例
Dec 23 Python
Python3使用xlrd、xlwt处理Excel方法数据
Feb 28 Python
matplotlib.pyplot.matshow 矩阵可视化实例
Jun 16 Python
python logging模块的使用
Sep 07 Python
python 使用openpyxl读取excel数据
Feb 18 Python
Pytest之测试命名规则的使用
Apr 16 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的header和asp中的redirect比较
2006/10/09 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
PHP动态分页函数,PHP开发分页必备啦
2011/11/07 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
php数组去除空值函数分享
2015/02/02 PHP
开启PHP Static 关键字之旅模式
2015/11/13 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
Laravel模型事件的实现原理详解
2018/03/14 PHP
Microsoft Ajax Minifier 压缩javascript的方法
2010/03/05 Javascript
jquery获取input表单值的代码
2010/04/19 Javascript
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
2011/11/30 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
javascript中setTimeout使用指南
2015/07/26 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
vue.js初学入门教程(2)
2016/11/07 Javascript
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
Vue+element-ui 实现表格的分页功能示例
2018/08/18 Javascript
JavaScript学习笔记之DOM基础操作实例小结
2019/01/09 Javascript
基于vue手写tree插件的那点事儿
2019/08/20 Javascript
layui的表单提交以及验证和修改弹框的实例
2019/09/09 Javascript
Python 备份程序代码实现
2017/03/06 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
Django 前后台的数据传递的方法
2017/08/08 Python
Python 编码规范(Google Python Style Guide)
2018/05/05 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
Python如何使用k-means方法将列表中相似的句子归类
2019/08/08 Python
python 画3维轨迹图并进行比较的实例
2019/12/06 Python
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
phpquery中文手册
2021/03/18 PHP
销售部主管岗位职责
2013/12/18 职场文书
大学三年的自我评价
2013/12/25 职场文书
结婚周年感言
2014/02/24 职场文书
运动会宣传稿100字
2015/07/23 职场文书
工程主管竞聘书
2015/09/15 职场文书
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers