QTP中实现函数的重载

发表于:2008-09-08来源:作者:点击数: 标签:qtpQTP重载函数
大家都知道,在 vb s中没有提供函数重载的功能,在很大程度上造成了 开发 脚本的不方便,其实在 QTP 中是可以将方法进行重载的,在QTP帮助里有很详细的说明 其实无非就是两个方法: 1、RegisterUserFunc 原型: RegisterUserFunc TOClass, MethodName, Funct


大家都知道,在vbs中没有提供函数重载的功能,在很大程度上造成了开发脚本的不方便,其实在QTP中是可以将方法进行重载的,在QTP帮助里有很详细的说明

其实无非就是两个方法:

1、RegisterUserFunc

原型:

RegisterUserFunc TOClass, MethodName, FunctionName, SetAsDefault

TOClass:测试对象

MethodName:需要被重载的方法

FunctionName:封装的函数名

SetAsDefault:是否作为测试对象的标准方法

2、UnRegisterUserFunc

原型:

UnRegisterUserFunc TOClass, MethodName

TOClass:测试对象

MethodName:需要被重载的方法

实例:

对于一个WebEdit的Set方法进行封装并重载

Browser(xx).Page(xx).WebEdit(xx).Set "xxxx"

希望在给这个WebEdit赋值前记录下之前的值,可以使用如下代码

Function MySet (obj, newvalue)
    'obj:测试对象
    'newvalue:赋的新值
       dim oldvalue
       ōldvalue = obj.GetROProperty("value")
       Reporter.ReportEvent micDone, "previous value", oldvalue
       MySet=obj.Set(newvalue)
End Function

然后使用RegisterUserFunc和UnRegisterUserFunc方法:

RegisterUserFunc "WebEdit" , "Set" , "MySet" , False

Browser(xx).Page(xx).WebEdit(xx).Set "xxxx"

UnRegisterUserFunc "WebEdit" , "Set"

或者直接调用

MySet Browser(xx).Page(xx).WebEdit(xx) , "xxxx"

此时,MySet函数实际上是重载了Set方法,并增加了输入旧值的功能

大家可以根据自己的需要来重载QTP的标准方法,在实际运用中有不小的作用

比如:记录下初始值,便于测试后清理环境等

 

原文转自:http://www.ltesting.net