Python中unittest模块做UT(单元测试)使用实例


Posted in Python onJune 12, 2015

待测试的类(Widget.py)

# Widget.py 
# Python 2.7.6 
 
class Widget: 
  def __init__(self, size = (40,40)): 
    self.size = size 
  def getSize(self): 
    return self.size 
  def reSize(self,width,height): 
    if width <0 or height < 0: 
      raise ValueError, 'illegal size' 
    else: 
      self.size = (width,height) 
      return self.size 
  def dispose(self): 
    pass

测试类(Auto.py)

# coding=utf8 
# Auto.dy 
# Python 2.7.6 
 
from Widget import Widget #导入测试类模块Widget 
import unittest      #导入unittest模块  
 
 
class WidgetTestCase(unittest.TestCase): 
#让所有执行测试的类都继承于TestCase类,可以将TestCase看成是对特定类进行测试的方法的集合 
 
  #在setUp()方法中进行测试前的初始化工作。 
  def setUp(self):   
    self.widget = Widget() 
 
  #并在tearDown()方法中执行测试后的清除工作,setUp()和tearDown()都是TestCase类中定义的方法。 
  def tearDown(self): 
    self.widget = None 
 
  #测试Widget类中getSize方法 
  def testgetSize(self): 
    print "Test GetSize" 
    #对Widget类中getSize()方法的返回值和预期值进行比较,确保两者是相等的, 
    #assertEqual()也是TestCase类中定义的方法。 
    self.assertEqual(self.widget.getSize(), (40, 40)) 
     
  #测试Widget类中reSize方法 
  def testreSize(self): 
    print "Test Resize" 
    #对Widget类中reSize()方法的返回值和预期值进行比较,确保两者是相等的。 
    #assertEqual()也是TestCase类中定义的方法。 
    self.assertEqual(self.widget.reSize(50,100),(50,100)) 
   
 
#提供名为suite()的全局方法,PyUnit在执行测试的过程调用suit()方法来确定有多少个测试用例需要被执行, 
#可以将TestSuite看成是包含所有测试用例的一个容器。 
def suite(): 
  suite = unittest.TestSuite() 
  suite.addTest(WidgetTestCase("testgetSize"))#往此添加需要测试的方法testgetSize() 
  suite.addTest(WidgetTestCase("testreSize")) #往此添加需要测试的方法testreSize() 
  return suite  
 
if __name__ == "__main__": 
  unittest.main(defaultTest = 'suite') #在主函数中调用全局方法.

测试结果:

D:\Python>python27 Auto.py 
Test GetSize 
.Test Resize 
. 
------------------------------ 
Ran 2 tests in 0.004s 
 
OK

总结:
1。第一步:先写好测试类
2。第二步:导入unittest模块及测试的类,运用setup()方法做测试前的准备工作,如建立数据库连接,运用teardown()方法做测试后的清除工作,如取消数据库的链接,再对类中的方法逐一做测试。
3。第三步: 写suite()的全局方法,将要测试的方法,一一加入。
测试结果,有几个测试用例就有几个. 最后显示OK,表示通过。

Python 相关文章推荐
python实现批量获取指定文件夹下的所有文件的厂商信息
Sep 28 Python
Python中运行并行任务技巧
Feb 26 Python
Python中的深拷贝和浅拷贝详解
Jun 03 Python
利用Celery实现Django博客PV统计功能详解
May 08 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
Jul 09 Python
解决python xlrd无法读取excel文件的问题
Dec 25 Python
Django实现学员管理系统
Feb 26 Python
Win10下python 2.7与python 3.7双环境安装教程图解
Oct 12 Python
python实现门限回归方式
Feb 29 Python
Python实现汇率转换操作
May 03 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
May 22 Python
python批量修改交换机密码的示例
Sep 22 Python
搞笑的程序猿:看看你是哪种Python程序员
Jun 12 #Python
Python 3.x 新特性及10大变化
Jun 12 #Python
Python实现比较两个列表(list)范围
Jun 12 #Python
在Linux系统上安装Python的Scrapy框架的教程
Jun 11 #Python
Python语言实现机器学习的K-近邻算法
Jun 11 #Python
在Linux下使用Python的matplotlib绘制数据图的教程
Jun 11 #Python
python中的代码编码格式转换问题
Jun 10 #Python
You might like
PHP递归遍历多维数组实现无限分类的方法
2016/05/06 PHP
Laravel框架基于ajax实现二级联动功能示例
2019/01/17 PHP
Laravel多域名下字段验证的方法
2019/04/04 PHP
IE6、IE7中获取Button元素的值的bug说明
2011/08/28 Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
js确认框confirm()用法实例详解
2016/01/07 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
2019/06/15 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
vue绑定class的三种方法
2020/12/24 Vue.js
[02:07]DOTA2新英雄展现中国元素,完美“圣典”亮相央视
2016/12/19 DOTA
使用Python神器对付12306变态验证码
2016/01/05 Python
python中import学习备忘笔记
2017/01/24 Python
Python实现的多叉树寻找最短路径算法示例
2018/07/30 Python
python将list转为matrix的方法
2018/12/12 Python
Python画图实现同一结点多个柱状图的示例
2019/07/07 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
2019/08/08 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
2020/02/27 Python
Python常用断言函数实例汇总
2020/11/30 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
求高于平均分的学生学号及成绩
2016/09/01 面试题
C有"按引用传递"吗
2016/09/06 面试题
优秀的导游求职信范文
2014/04/06 职场文书
2014法制宣传日活动总结范文
2014/11/01 职场文书
个园导游词
2015/02/04 职场文书
慈善献爱心倡议书
2015/04/27 职场文书
早恋主题班会
2015/08/14 职场文书
企业文化学习心得体会
2016/01/21 职场文书
Java练习之潜艇小游戏的实现
2022/03/16 Java/Android