QTP中实现函数的重载

发表于:2008-07-14来源:作者:点击数: 标签: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)
:Qdq,[L0`,pZD8B0    'obj:测试对象51Testing软件测试网5t/^o3o:Udu:w6o
    'newvalue:赋的新值51Testing软件测试网fO'z2}*we4x%v
       dim oldvalue
_\ A)m;R L9SV&z0       ōldvalue = obj.GetROProperty("value") 51Testing软件测试网W;j2mbCcm
       Reporter.ReportEvent micDone, "previous value", oldvalue
M6y7j*imd0       MySet=obj.Set(newvalue)
&j7b?9HE0End 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