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 相关文章推荐
wxPython框架类和面板类的使用实例
Sep 28 Python
在Python的Django框架中包装视图函数
Jul 20 Python
利用Python中的pandas库对cdn日志进行分析详解
Mar 07 Python
Python2.7+pytesser实现简单验证码的识别方法
Dec 29 Python
Python简单计算文件MD5值的方法示例
Apr 11 Python
numpy中的高维数组转置实例
Apr 17 Python
Django网络框架之创建虚拟开发环境操作示例
Jun 06 Python
Flask配置Cors跨域的实现
Jul 12 Python
python上selenium的弹框操作实现
Jul 13 Python
套娃式文件夹如何通过Python批量处理
Aug 23 Python
Python爬虫制作翻译程序的示例代码
Feb 22 Python
python实现简单石头剪刀布游戏
Oct 24 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的FTP学习(一)
2006/10/09 PHP
php 数组的指针操作实现代码
2011/02/08 PHP
推荐几个开源的微信开发项目
2014/12/28 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
2017/02/08 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
基于laravel Request的所有方法详解
2019/09/29 PHP
js同时按下两个方向键
2007/12/01 Javascript
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
jQuery获取样式中的背景颜色属性值/颜色值
2012/12/17 Javascript
jquery封装的对话框简单实现
2013/07/21 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
JavaScript闭包实例讲解
2014/04/22 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
JS实现选项卡实例详解
2015/11/17 Javascript
详解angular ui-grid之过滤器设置
2017/06/07 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
2019/04/30 Javascript
js刷新页面location.reload()用法详解
2019/12/09 Javascript
jquery检测上传文件大小示例
2020/04/26 jQuery
python判断windows隐藏文件的方法
2014/03/21 Python
python微元法计算函数曲线长度的方法
2018/11/08 Python
Python实现简单查找最长子串功能示例
2019/02/26 Python
Python matplotlib画图与中文设置操作实例分析
2019/04/23 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
TensorFlow使用Graph的基本操作的实现
2020/04/22 Python
Python文件操作及内置函数flush原理解析
2020/10/13 Python
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
中华魂演讲稿
2014/05/13 职场文书
英文版辞职信
2015/02/28 职场文书
会计工作态度自我评价
2015/03/06 职场文书
担保书格式范文
2015/09/22 职场文书
李清照的诗词赏析(20首)
2019/08/22 职场文书
浅谈MySQL next-key lock 加锁范围
2021/06/07 MySQL
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript