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中操作字符串之rstrip()方法的使用
May 19 Python
python字典操作实例详解
Nov 16 Python
每天迁移MySQL历史数据到历史库Python脚本
Apr 13 Python
python实现飞机大战
Sep 11 Python
Python3编码问题 Unicode utf-8 bytes互转方法
Oct 26 Python
python 顺时针打印矩阵的超简洁代码
Nov 14 Python
一篇文章搞懂Python的类与对象名称空间
Dec 10 Python
Django中的FBV和CBV用法详解
Sep 15 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
Feb 27 Python
Python数据相关系数矩阵和热力图轻松实现教程
Jun 16 Python
python转化excel数字日期为标准日期操作
Jul 14 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
Jul 18 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之第十天
2006/10/09 PHP
php入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
PHP实现的MD5结合RSA签名算法实例
2017/10/07 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
2020/05/01 PHP
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
javascipt匹配单行和多行注释的正则表达式
2013/11/20 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
2014/06/03 Javascript
通过设置CSS中的position属性来固定层的位置
2015/12/14 Javascript
JS中script标签defer和async属性的区别详解
2016/08/12 Javascript
JS实现AES加密并与PHP互通的方法分析
2017/04/19 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
解决angular2 获取到的数据无法实时更新的问题
2018/08/31 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
Vue中 axios delete请求参数操作
2020/08/25 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
react-native 实现购物车滑动删除效果的示例代码
2021/01/15 Javascript
[01:15:56]2018DOTA2亚洲邀请赛3月30日 小组赛A组 TNC VS Newbee
2018/03/31 DOTA
python服务器与android客户端socket通信实例
2014/11/12 Python
用map函数来完成Python并行任务的简单示例
2015/04/02 Python
Python中对数组集进行按行打乱shuffle的方法
2018/11/08 Python
python 实现二维列表转置
2019/12/02 Python
Django 自定义权限管理系统详解(通过中间件认证)
2020/03/11 Python
django模型动态修改参数,增加 filter 字段的方式
2020/03/16 Python
Python根据指定文件生成XML的方法
2020/06/29 Python
Python字典实现伪切片功能
2020/10/28 Python
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
表彰先进集体通报
2014/01/12 职场文书
高一新生军训感言
2014/03/02 职场文书
重阳节标语大全
2014/10/07 职场文书
2014年路政工作总结
2014/12/10 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
《月歌。》宣布制作10周年纪念剧场版《RABBITS KINGDOM THE MOVIE》
2022/04/02 日漫