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通过shutil实现快速文件复制的方法
Mar 14 Python
简单介绍Python中的round()方法
May 15 Python
详解Python 模拟实现生产者消费者模式的实例
Aug 10 Python
django实现同一个ip十分钟内只能注册一次的实例
Nov 03 Python
Python内存管理方式和垃圾回收算法解析
Nov 11 Python
Selenium鼠标与键盘事件常用操作方法示例
Aug 13 Python
python动态文本进度条的实例代码
Jan 22 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
Feb 28 Python
Python 添加文件注释和函数注释操作
Aug 09 Python
python“静态”变量、实例变量与本地变量的声明示例
Nov 13 Python
Python代码风格与编程习惯重要吗?
Jun 03 Python
python计算列表元素与乘积详情
Aug 05 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中$_FILES的使用方法及注意事项说明
2014/02/14 PHP
ThinkPHP实现事务回滚示例代码
2014/06/23 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
PHP处理bmp格式图片的方法分析
2017/07/04 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
PHP实现简单的计算器
2020/08/28 PHP
Ubuntu 11.10 安装Node.js的方法
2011/11/30 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
2016/08/02 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
前端JS面试中常见的算法问题总结
2016/12/23 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
2020/11/02 Javascript
[01:34]2016国际邀请赛中国区预选赛IG战队教练采访
2016/06/27 DOTA
python求素数示例分享
2014/02/16 Python
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
Python下使用Psyco模块优化运行速度
2015/04/05 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
Python利用Beautiful Soup模块创建对象详解
2017/03/27 Python
获取python的list中含有重复值的index方法
2018/06/27 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
python函数与方法的区别总结
2019/06/23 Python
pytorch+lstm实现的pos示例
2020/01/14 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
群胜软件Java笔试题
2012/09/29 面试题
前台接待员岗位职责
2014/01/02 职场文书
会计的岗位职责
2014/03/15 职场文书
承诺函格式模板
2015/01/21 职场文书
如何vue使用el-table遍历循环表头和表体数据
2022/04/26 Vue.js