51Testing软件测试网h6x iVe)Z lb大家都知道,在vbs中没有提供函数重载的功能,在很大程度上造成了开发脚本的不方便,其实在QTP中是可以将方法进行重载的,在QTP帮助里有很详细的说明
5oL+y"{o ~5fu3ox0~Z&[/IRF&D0其实无非就是两个方法:
e|!D
B
]#sRh0T LYvN^3i6O^01、RegisterUserFunc51Testing软件测试网d+g9ww,U
&Xh1eZ3t1G!aG0原型:
StmR0|*\x"H051Testing软件测试网Q
V&i?D.x8I[.cRegisterUserFuncTOClass, MethodName, FunctionName, SetAsDefault51Testing软件测试网E:g!X7L)om
%xOH}Sv&r0TOClass:测试对象
.CZ8}u ?-L/g051Testing软件测试网0~IY(g_(KMS5lMethodName:需要被重载的方法51Testing软件测试网!KH9Mm(l]@.^|N[
51Testing软件测试网`2E1}sh\FunctionName:封装的函数名51Testing软件测试网r;f#VbfBK
[ u.{$US(G0SetAsDefault:是否作为测试对象的标准方法51Testing软件测试网&J8u/Q&O%Xk'qTI7AQ
jdlGFt7ZI02、UnRegisterUserFunc
I,NJ3K/g)eNl051Testing软件测试网`-Oy7ng}j原型:
RXt g+QFw051Testing软件测试网0\/W#opi(W)yUnRegisterUserFuncTOClass, MethodName
XLbs!f
~bT(i+P5?0W f w&]0[
E2l'YK0TOClass:测试对象51Testing软件测试网E2w$T7Ct1~M"I
'V%t+Pb"s0MethodName:需要被重载的方法
4P&tF
g aiyCYE
I#N'C051Testing软件测试网@J M/}5Ge4\实例:51Testing软件测试网Td(}+L.S?LY
51Testing软件测试网#f+b1x`
Hv u^对于一个WebEdit的Set方法进行封装并重载
(n0mB:[2W.|051Testing软件测试网 gw1d6YbNwv3?}Browser(xx).Page(xx).WebEdit(xx).Set "xxxx"51Testing软件测试网}a&blwq
51Testing软件测试网5K%v#l-n.TRY希望在给这个WebEdit赋值前记录下之前的值,可以使用如下代码
PR'mwB N@3q,A$w02`a.||"\X
l0Function MySet (obj, newvalue)51Testing软件测试网he2X^
w
'obj:测试对象51Testing软件测试网],j;?^Roj
'newvalue:赋的新值
#Y^p}!C.MGf
s0 dim oldvalue51Testing软件测试网[X.GTN;JM
ōldvalue = obj.GetROProperty("value")51Testing软件测试网t
ndKBdZ&]Y+Y
Reporter.ReportEvent micDone, "previous value", oldvalue
J
~!Fk+RR7M-? F0 MySet=obj.Set(newvalue)51Testing软件测试网cq`;u/r8U4`
End Function51Testing软件测试网kNdd'`C!X`L&XT]
然后使用RegisterUserFunc和UnRegisterUserFunc方法:51Testing软件测试网:U&s$T%HJ+o%h
RegisterUserFunc "WebEdit" , "Set" , "MySet" , False
.R_RY+Or0Browser(xx).Page(xx).WebEdit(xx).Set "xxxx"51Testing软件测试网C6C]:Sq([ b/x3G B
UnRegisterUserFunc "WebEdit" , "Set"51Testing软件测试网9P z fZWQ6g6rO
或者直接调用
W/bFw'q&~QC0MySetBrowser(xx).Page(xx).WebEdit(xx) , "xxxx"51Testing软件测试网~+{{I4p
此时,MySet函数实际上是重载了Set方法,并增加了输入旧值的功能
9v WN
]mk0大家可以根据自己的需要来重载QTP的标准方法,在实际运用中有不小的作用51Testing软件测试网'L@WK!@O
比如:记录下初始值,便于测试后清理环境等51Testing软件测试网yK$a*S}vR