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脚本对Linux服务器进行监控的教程
Apr 02 Python
使用Protocol Buffers的C语言拓展提速Python程序的示例
Apr 16 Python
Python实现拷贝多个文件到同一目录的方法
Sep 19 Python
Python基础知识_浅谈用户交互
May 31 Python
最近Python有点火? 给你7个学习它的理由!
Jun 26 Python
Python如何发布程序的详细教程
Oct 09 Python
django之对FileField字段的upload_to的设定方法
Jul 28 Python
学习和使用python的13个理由
Jul 30 Python
最新Python idle下载、安装与使用教程图文详解
Nov 28 Python
pyqt5实现井字棋的示例代码
Dec 07 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 Python
Python 实现RSA加解密文本文件
Dec 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
简单实现限定phpmyadmin访问ip的方法
2013/03/05 PHP
php通过字符串调用函数示例
2014/03/02 PHP
php使用socket post数据到其它web服务器的方法
2015/06/02 PHP
php 中的closure用法详解
2017/06/12 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
2019/10/18 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
Firebug入门指南(Firefox浏览器)
2010/08/21 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
js计算精度问题小结
2013/04/22 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
javascript中字符串拼接详解
2014/09/26 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
2015/12/09 Javascript
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
2018/05/27 Javascript
详解Vue结合后台的列表增删改案例
2018/08/21 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
2019/09/03 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
2020/09/04 Javascript
Python中还原JavaScript的escape函数编码后字符串的方法
2014/08/22 Python
Python中用max()方法求最大值的介绍
2015/05/15 Python
python3爬取各类天气信息
2018/02/24 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
2019/07/15 Python
Python判断字符串是否xx开始或结尾的示例
2019/08/08 Python
python+selenium select下拉选择框定位处理方法
2019/08/24 Python
PyCharm 无法 import pandas 程序卡住的解决方式
2020/03/09 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
Python新手学习装饰器
2020/06/04 Python
基于python实现可视化生成二维码工具
2020/07/08 Python
竞争与合作演讲稿
2014/05/12 职场文书
公证委托书标准格式
2014/09/11 职场文书
2014年实验室工作总结
2014/12/03 职场文书
小班上学期个人总结
2015/02/12 职场文书
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python