专注测试5年

(转载)自定义QTP保留对象的神话

上一篇 / 下一篇  2008-11-10 09:29:48 / 个人分类:QTP

摘要:QTP包含了很多保留对象,其实我们可以将所有使用的方法封装成DLL文件,然后通过COM机制注册到系统中,注册自定义保留对象机制来完成对象的定义。

  关键字:QTP保留对象,COM机制

  大家在使用QTP的过程中经常会用到函数或过程,一般情况下大家将这些函数写到一个文件中如:xxx.vbs中,或者直接封装成DLL文件,通过QTP的函数(ExecuteFile)来载入这些已经声明的函数和过程,然后进行具体调用。这样对于大家的使用并不方便和快捷,所以本人就展开了对于自定义QTP保留对象的研究。

  一、在VB环境下新建一个DLL文件

  1、打开VB6.0环境,新建如下工程

图1.1

  2、简单设计一个函数和一个过程,代码如下:

‘*****************************
‘函数功能:比较两个数是否相等‘输入参数:Para1、Para2

‘输出参数:弹出提示

‘*****************************
Public Function CompareValue(Para1, Para2)

If Para1 = Para2 Then

MsgBox "输入的两个参数相等", vbInformation + vbOKOnly, "提示"

Else

MsgBox "输入的两个参数不相等", vbInformation + vbOKOnly, "提示"

End If

End Function

3、设置工程属性

  

  图中1.3

  上图所示:

  红色标注1、表示类名,设置为:ClassName,注册自定义保留对象用到。

  红色标注2、表示工程名,设置为:PrjName,注册自定义保留对象用到。

  4、生成文件:PrjName.dll

  点击文件——>生成 PrjName.dll

  二、 注册DLL文件为标准的COM组件

  如果文件放到F盘下,那运行:regsvr32 f:\PrjName.dll就可以完成注册,撤销注册运行:regsvr32 /u f:\PrjName.dll。注册完成后,注册表HKEY_CLASSES_ROOT中查询PrjName.ClassName如下:

  

  

   你可以点击每一个文件夹查询选项的值。

注册自定义QTP保留对象

  将自己的所自定义的保留对象注册到注册表中,这个并不是QTP所包含的保留对象,而是自己设计的保留对象,用VB写的类和函数是可注册的COM对象。操作如下:

  打开注册表,定位注册项:


图3.1

  添加一个名为“MyObject”的注册项;

  添加两个“REG_SZ”类型的注册项,分别为:

  ProgID:准备创建的COM 对象的ID,在这里就是Dictionary 对象所对应的COM 对 象名“PrjName.ClassName”。这个就是前面提到的VB中的工程名、类名。 UIName:QTP指向保留对象的名字,在这里输入“MyObject”

  添加一个类型为“REG_DWORD”的注册项;

  VisibleMode:设置DWORD 值为2,用于控制自动完成(auto-complete)和代码智能感知(intelligence)。

  使用自定义QTP保留对象

  做完以上设置后,重新启动QTP,然后分为两种使用方式

  在关键字视图中调用

  在Insert菜单中选择Step Generator,然后选择Utility Objects,你可以在Object中看到我们定义的保留对象,如下显示:

图4.1

  选中后,你可以在Opertion中看到我们定义的方法,你可以选择某个方法使用。

在专家视图中调用

图4.2

  便捷的控制自动完成(auto-complete)和代码智能感知功能,我们可以大声的说,QTP的功能我们也可以实现了。

图4.3

  方便的参数说明提示,使你更容易理解参数说明的意义,使用起来一目了然,你不用了解函数库里面封装的具体内容和死记函数名称,你只需输入”.”,QTP就会自动给出你友好的提示。

图4.4

  小结

  通过以上图示我们完成了自己封装的DLL函数的自动显示和调用,这样不仅减少了我们设计代码的时间,更大的好处是给开发测试代码人员提示功能,往往一个项目中,公用函数库都是由一个到两个工程师来开发完成的,如果做成VBS或者DLL文件,那我们每次调用的时候都需要加入如下语句来完成库的加载:

ExecuteFile "F:\xxx.vbs" ‘装载VBS文件
Extern.Declare micLong, "Beep", "kernel32.dll", "Beep", micLong   ‘装载dll文件
Extern.Beep 500

  以上两条语句不仅费时,而且点击“.” 后也不能控制自动完成(auto-complete)和代码智能感知,并且开发脚本人员必须特别熟悉库中的函数和过程的具体含义才能使用,库函数多了,开发脚本人员使用某个函数时,都需要进行查找,这样既不方便也不快捷,而且会大大增加了项目的工作量,所以通过我们的研究方法,完全可以按照自定义QTP保留对象来完成函数库的整合,这样开发脚本人员在使用的时候只需要知道我们的保留对象名称即可。

  总之,本文介绍了自定义QTP保留对象和注册COM对象对象的方法,其实QTP所支持的方法不仅仅如此,还有很多东西值得我们探索和研究,在自动化测试的道路上,只要我们大家为了一个共同的目的,提高自动化测试规范和流程,实现代码更高的效率,那我们会创造一个又一个神话!!!


TAG: QTP

 

评分:0

我来说两句

Open Toolbar