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构造icmp echo请求和实现网络探测器功能代码分享
Jan 10 Python
Python中的localtime()方法使用详解
May 22 Python
全面了解Nginx, WSGI, Flask之间的关系
Jan 09 Python
python实现连续图文识别
Dec 18 Python
Flask教程之重定向与错误处理实例分析
Aug 01 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
Feb 20 Python
python 伯努利分布详解
Feb 25 Python
Python 实现打印单词的菱形字符图案
Apr 12 Python
matplotlib之属性组合包(cycler)的使用
Feb 24 Python
Python的collections模块真的很好用
Mar 01 Python
Python实战之用tkinter库做一个鼠标模拟点击器
Apr 27 Python
Python自动化实战之接口请求的实现
May 30 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针对数字的加密解密类
2014/03/20 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
jquery 中多条件选择器,相对选择器,层次选择器的区别
2012/07/03 Javascript
js关闭当前页面(窗口)的几种方式总结
2013/03/05 Javascript
使用phantomjs进行网页抓取的实现代码
2014/09/29 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
AngularJS入门教程之数据绑定用法示例
2016/11/01 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
vue+vant使用图片预览功能ImagePreview的问题解决
2020/04/10 Javascript
js实现轮播图效果 纯js实现图片自动切换
2020/08/09 Javascript
[02:16]DOTA2英雄基础教程 干扰者
2014/01/15 DOTA
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
简单了解OpenCV是个什么东西
2017/11/10 Python
用Python实现筛选文件脚本的方法
2018/10/27 Python
python pands实现execl转csv 并修改csv指定列的方法
2018/12/12 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
2019/08/08 Python
Python实现Restful API的例子
2019/08/31 Python
numpy ndarray 取出满足特定条件的某些行实例
2019/12/05 Python
基于python监控程序是否关闭
2020/01/14 Python
夏威夷航空官网:Hawaiian Airlines
2016/09/11 全球购物
纽约手袋品牌:KARA
2018/03/18 全球购物
伦敦香水公司:The London Perfume Company
2019/11/13 全球购物
公务员政审个人鉴定
2014/02/25 职场文书
公司开业庆典主持词
2014/03/21 职场文书
社区服务标语
2014/07/01 职场文书
先进党员事迹材料
2014/12/24 职场文书
2016年领导干部正风肃纪心得体会
2015/10/09 职场文书
2015年小学语文教师工作总结
2015/10/23 职场文书
组织委员竞选稿
2015/11/21 职场文书
详解MySQL中的主键与事务
2021/05/27 MySQL
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python