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创建只读属性对象的方法(ReadOnlyObject)
Feb 10 Python
MySQLdb ImportError: libmysqlclient.so.18解决方法
Aug 21 Python
Python绘制KS曲线的实现方法
Aug 13 Python
基于Python实现定时自动给微信好友发送天气预报
Oct 25 Python
Python基本socket通信控制操作示例
Jan 30 Python
浅谈python的输入输出,注释,基本数据类型
Apr 02 Python
Python的形参和实参使用方式
Dec 24 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
Mar 02 Python
Python变量格式化输出实现原理解析
Aug 06 Python
基于python实现简单C/S模式代码实例
Sep 14 Python
python数据分析之用sklearn预测糖尿病
Apr 22 Python
baselines示例程序train_cartpole.py的ImportError
May 20 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获取数组中重复数据的两种方法
2013/06/28 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
php实例分享之mysql数据备份
2014/05/19 PHP
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
PHP实现的比较完善的购物车类
2014/12/02 PHP
php调整服务器时间的方法
2015/04/03 PHP
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
php array_map使用自定义的函数处理数组中的每个值
2016/10/26 PHP
php 调用百度sms来发送短信的实现示例
2018/11/02 PHP
PHP Trait代码复用类与多继承实现方法详解
2019/06/17 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
2021/03/09 PHP
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
jquery div拖动效果示例代码
2013/12/08 Javascript
instanceof和typeof运算符的区别详解
2014/01/06 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
2015/11/29 Javascript
基于Jquery插件Uploadify实现实时显示进度条上传图片
2020/03/26 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
微信小程序 本地数据读取实例
2017/04/27 Javascript
JS实现简单获取最近7天和最近3天日期的方法
2018/04/18 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
[04:13]2018国际邀请赛典藏宝瓶Ⅱ饰品一览
2018/07/21 DOTA
python连接mysql数据库示例(做增删改操作)
2013/12/31 Python
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
python SMTP实现发送带附件电子邮件
2018/05/22 Python
python实现求特征选择的信息增益
2018/12/18 Python
Django框架模板注入操作示例【变量传递到模板】
2018/12/19 Python
python实现趣味图片字符化
2019/04/30 Python
python与idea的集成的实现
2020/11/20 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
2021/01/19 Python
使用Python webdriver图书馆抢座自动预约的正确方法
2021/03/04 Python
戴森比利时官方网站:Dyson BE
2020/10/03 全球购物
党员示范岗材料
2014/12/19 职场文书
2015员工年度考核评语
2015/03/25 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书
浅谈Go语言多态的实现与interface使用
2021/06/16 Golang
使用 Docker Compose 构建复杂的多容器App
2022/04/30 Servers