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的Django框架中设置日期和字段可选的方法
Jul 17 Python
Python获取linux主机ip的简单实现方法
Apr 18 Python
python selenium 对浏览器标签页进行关闭和切换的方法
May 21 Python
python SMTP实现发送带附件电子邮件
May 22 Python
python的格式化输出(format,%)实例详解
Jun 01 Python
python调用摄像头显示图像的实例
Aug 03 Python
python pandas读取csv后,获取列标签的方法
Nov 12 Python
python批量爬取下载抖音视频
Jun 17 Python
Django文件存储 自己定制存储系统解析
Aug 02 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
Aug 12 Python
python实现H2O中的随机森林算法介绍及其项目实战
Aug 29 Python
详解如何用python实现一个简单下载器的服务端和客户端
Oct 28 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的cms
2010/12/19 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
通过php添加xml文档内容的方法
2015/01/23 PHP
thinkphp的dump函数无输出实例代码
2016/11/15 PHP
jquery DIV撑大让滚动条滚到最底部代码
2013/06/06 Javascript
关于Javascript 对象(object)的prototype
2014/05/09 Javascript
第三章之Bootstrap 表格与按钮功能
2016/04/25 Javascript
vue-resource 拦截器(interceptor)的使用详解
2017/07/04 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
angular中实现li或者某个元素点击变色的两种方法
2017/07/27 Javascript
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
2017/08/04 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
javascript中join方法实例讲解
2019/02/21 Javascript
详解基于Vue的支持数据双向绑定的select组件
2019/09/02 Javascript
vue使用showdown并实现代码区域高亮的示例代码
2019/10/17 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
浅谈Python爬虫基本套路
2019/03/25 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
python openCV获取人脸部分并存储功能
2019/08/28 Python
python import 上级目录的导入
2020/11/03 Python
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
渗透攻击的测试步骤
2014/06/07 面试题
集团公司总经理岗位职责
2013/12/20 职场文书
父亲八十大寿答谢词
2014/01/23 职场文书
财经学院自荐信范文
2014/02/02 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
企业文化宣传标语
2014/06/09 职场文书
家长学校培训材料
2014/08/20 职场文书
二年级学生期末评语
2014/12/26 职场文书
简单的辞职信怎么写
2015/02/28 职场文书
2016年学校党支部公开承诺书
2016/03/25 职场文书
详解如何使用Node.js实现热重载页面
2021/05/06 Javascript
实例详解Python的进程,线程和协程
2022/03/13 Python
Python正则表达式中flags参数的实例详解
2022/04/01 Python