51Testing丛书连载:(四十六)精通QTP——自动化测试技术领航

发表于:2012-2-15 12:06

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:余杰 赵旭斌    来源:51Testing软件测试网

3.4  Excel—数据驱动必备利器

  阶段要点

  ● EOM模型简介。

  ● 熟练掌握EOM对Excel的自动化操作。

  ● 详细分解如何动态加载宏代码并应用于自动化过程中。

  ● 实现更多高级的Excel与QTP的联动技巧。

3.4.1  利用EOM自动化EXCEL

3.4.1.1  EOM模型简介

  EOM:全称为Excel Automation Object Model 即为Excel的自动化模型对象

  在自动化测试过程中,经常会把数据和脚本进行分离,也就是平时所说的数据驱动模型,而在QTP中经常会使用参数化的方式,并结合QTP的DataTable对象来对数据表进行操作和储存数据。那读者一定会问,既然QTP已经存在了对数据表的操作,并且已经可以非常容易地使用了,为什么这里还要介绍EOM呢?其实本人也和大家想的一样,对于QTP的DataTable已经可以非常出色地满足基本的需求了,并且mercury当初对这块东西也封装的不错,使用过的朋友觉得很好用。但是作为一个自动化测试工程是来说,是否想过一个问题:在大多数情况下数据准备、环境准备都是由自动化测试人员来完成的,当我们手里有一份数据量较大的数据表,并且此数据表的格式并不是符合QTP读取DataTable的规范格式,那下一步该怎么办呢?

  这里提供两种方式供大家选择。

  ● 通过编写Excel Macros把数据表的格式转化为QTP中DataTable的格式。

  ● 直接抛弃DataTable功能,使用EOM来对数据表进行操控。

  两种方式都是不错的解决方案,但是个人比较喜爱第二种。因为第一种方式中间多了一个转化Excel格式的步骤,第二种方式直接根据数据表格式进行数据读取。读者可以根据自己的实际情况进行选择使用。接下来就看一下EOM到底有哪些“绝活”可以把Excel“玩于鼓掌之中”。

3.4.1.2  Excel Automation

  前面已经讲到了EOM是一个可以自动化Excel的自动化模型对象,既然需要使用EOM就必须先要对其进行引用,引用完毕之后才可以对其封装的所有方法进行调用,并对Excel进行自动化。当然引用一个COM组件对象时,必须要确定此组件对象的组件名和类名,Excel的组件名和类名分别为Excel和Application。确定好这些之后,就可以创建Excel的自动化模型了,脚本如下所示:

创建Excel自动化模型对象

Set excelApp = CreateObject("excel.application")

  执行结果:

  当在VBSedit的编辑区域里输入以上脚本后,可以看到在VBSedit的Object Browser视图中自动添加了一本书的图标,如图3-30所示。

图3-30

  从图3-30中可以看出,Excel自动化模型已经被成功引用加载到VBSedit中,也就是说EOM下的所有封装方法和对象都已经可以调用。为了能够顺利地讲解后续内容,此处首先要让读者明白两个概念,这两个概念就是Book和Sheet。虽然这是一个比较基础的概念,但经常发现许多同行会混淆这个概念。

  Book与Sheet的区别。

  Book是Excel的一个最大的模块单元,具体点就是一个Excel的文件,也就是一个Xls文件。这里需要注意的是,Excel Book和Word Book两者之间有着一个非常大的区别。细心的读者应该就会在平时的操作中发现,在打开多个Excel Book时(也就是打开多个xls文件),Excel会自动把当前所有打开的Excel Book都归类在一个主窗口中,这个主窗口同时也已经绑定了所有的子Book窗口,要创建Excel Book就必须要有主窗口,要关闭主窗口就必须关闭所有子窗口。也正是因为这个原因,很多时候才会遇到,当关闭一个主窗口时,会提示保存所有的Excel Book。Sheet是Book下的一个分类子模块,在每个Book下默认都会有3个Sheet,用户可以自动进行添加与删除。

41/41234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号