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 相关文章推荐
web.py中调用文件夹内模板的方法
Aug 26 Python
Python实现破解猜数游戏算法示例
Sep 25 Python
人机交互程序 python实现人机对话
Nov 14 Python
python使用openpyxl库修改excel表格数据方法
May 03 Python
Python selenium抓取微博内容的示例代码
May 17 Python
一篇文章搞懂Python的类与对象名称空间
Dec 10 Python
python3+selenium实现126邮箱登陆并发送邮件功能
Jan 23 Python
Python实现程序判断季节的代码示例
Jan 28 Python
Python动态赋值的陷阱知识点总结
Mar 17 Python
python+selenium 点击单选框-radio的实现方法
Sep 03 Python
如何用Python提取10000份log中的产品信息
Jan 14 Python
Python tkinter实现日期选择器
Feb 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中实现简单的ACL 完结篇
2011/09/07 PHP
php中防止SQL注入的最佳解决方法
2013/04/25 PHP
php中fgetcsv()函数用法实例
2014/11/28 PHP
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
Javascript图像处理—为矩阵添加常用方法
2012/12/27 Javascript
jQuery层次选择器选择元素使用介绍
2013/04/18 Javascript
js 获取后台的字段 改变 checkbox的被选中的状态 代码
2013/06/05 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
javascript使用btoa和atob来进行Base64转码和解码
2017/03/20 Javascript
浅谈原型对象的常用开发模式
2017/07/22 Javascript
三分钟教你用Node做一个微信哄女友(基友)神器(面向小白)
2019/06/21 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
在Python中处理日期和时间的基本知识点整理汇总
2015/05/22 Python
python删除过期文件的方法
2015/05/29 Python
使用Mixin设计模式进行Python编程的方法讲解
2016/06/21 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
Scrapy框架介绍之Puppeteer渲染的使用
2020/06/19 Python
什么是python的必选参数
2020/06/21 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
秘鲁购物网站:Linio秘鲁
2017/04/07 全球购物
英国假睫毛购买网站:FalseEyelashes.co.uk
2018/05/23 全球购物
美国最大的在线水培用品商店:GrowersHouse.com
2018/08/14 全球购物
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
软件测试笔试题
2012/10/25 面试题
建筑行业的大学生自我评价
2013/12/08 职场文书
司机检讨书
2014/02/13 职场文书
诚信贷款承诺书
2014/05/30 职场文书
学校社会实践活动总结
2014/07/03 职场文书
2015年公司新年寄语
2014/12/08 职场文书
小学教师个人工作总结2015
2015/04/20 职场文书
2015年环保局工作总结
2015/05/22 职场文书
清明节主题班会
2015/08/14 职场文书
Redis中有序集合的内部实现方式的详细介绍
2022/03/16 Redis