QTP中用于场景恢复的函数

上一篇 / 下一篇  2012-07-03 17:35:48 / 个人分类:自动化测试

在制作场景恢复的时候可以选择调用函数来解决,下面的函数就是为此写的。因为之前用的场景恢复只报错了,看报告后大概了解了Object、 Method、Arguments、retVal等参数的意义,于是写了这个方法,一方面可以截图,另一方面可以在报告中看到哪个对象出问题了。因为我经 常是通过公司的自动化平台调用测试案例,一般晚上或凌晨执行,第二天看结果,看结果的时候一般直接从QC打开报告查看,这样方便自己定位问题。

A` @$A ?8N0   这个方法的作用我简单描述一下:首先是指定一个目录,然后检查是否从QC调用的(因为有时候自己单机执行也用到这个),如果是就记录测试集的名称,如果 不是就放到SingleTest目录,然后判断对应的目录是否存在,不存在就创建目录。之后是创建日期时间标签,然后把文件完整路径组合起来,并加上了案 例名称,测试机器等等(因为有很多台机器,方便查看是否某台机器出问题了)。之后模拟2次回车按键是防止有异常对话框存在,然后把原来的对象语句自己还原 回来,这样如果是某个对象执行什么操作的时候语句出错,就可以在报告里看到了。

h;^tR4?z0

J9oE^$D#` OD0  当然并不是很完善,比如时间标签的分秒没有加0的判断,Arguments其实是个集合,只不过我只考虑了1个的情况,没考虑多个的情况。51Testing软件测试网$K ?p4Do FBz

51Testing软件测试网V0U gG2@;Fw$h

  需要用这个的朋友可以自己稍微维护改进一下。使用方法就是自己创建一个场景恢复,然后选择指定文件里的函数,下面的函数最好单独保存为一个文件,因为我之前把他和我的函数库放在一起,发现里面的初始化函数被执行了2次,可能和场景恢复有关,分开后就没问题了。

6P7A*C\_ X p?0'用于恢复场景控制。51Testing软件测试网1e P(kY%?5U
Function RecoveryFunctions(Object, Method, Arguments, retVal)
'g _6s'op,r1T0   '有错误发生时,对Desktop进行截图并保存
'^S Ue,IVSp&F0' SaveTestError ""51Testing软件测试网-O!Vf@|.{;o_ vQ
 Set bjWS = CreateObject("WScript.Shell")
q PjJ+BP9M0 strDesktopFolder = "T:/TestData/测试组/测试截图/"
kH.| {T0 If QCUtil.IsConnected then51Testing软件测试网l {@g&_dFa
  If TypeName(QCUtil.CurrentTestSet) <> "Nothing" Then
? D*eH)^&if0   set CurrentTSTest = QCUtil.CurrentTestSet
`*p[Tzd;_&D)GX0   strDesktopFolder = strDesktopFolder & CurrentTSTest.Name    '如果从QC的测试集运行的,则保存到测试集名字的目录下
4a.S|1Z)O0  Else
a9H.P;`c0   strDesktopFolder = strDesktopFolder & "SingleTest"    '如果不是从QC运行,保存到SingleTest目录下51Testing软件测试网X L:YR!M1v
  End If
h3e%] } s4b0 Else51Testing软件测试网 Avz.g+Z)b1y)m
  strDesktopFolder = strDesktopFolder & "SingleTest"
-Df~}%n0 End If
Wc)fzx#? d0        Set bjFSO = CreateObject("Scripting.FileSystemObject")51Testing软件测试网 wBX*O-t(HR
 If objFSO.FolderExists(strDesktopFolder) Then51Testing软件测试网1ou.VU9D GH?
  Set bjFolder = objFSO.GetFolder(strDesktopFolder)51Testing软件测试网 ].C u?u
 Else
k,[:b]N0^X8v0  Set bjFolder = objFSO.CreateFolder(strDesktopFolder) 
(Gw7L*e?9X0 End If
]aD-k f ~0 '确定保存文件的名称
o ?z$VNs.V(Z XC0 tmpTime=Time()
r'Z5Et+AH0P*B0 t=Split(tmpTime,":")51Testing软件测试网t(FQGdS
 If Len(t(0))<2 Then
;n G&`;|*b h8Ev$G0  t(0) = "0" & t(0)
RX Y8W:z N0 End If51Testing软件测试网~(zK0B~8a
 tmpTime=t(0) & t(1) & t(2)51Testing软件测试网6?$K(WUycY
 51Testing软件测试网T R-oF*k%v!q"r ]
 tmpDate=CStr(Date())51Testing软件测试网)mJq*Ex8et'q{ o
 tmpYear = CStr(Year(tmpDate))
"y5c M@g{ z0 tmpMonth = CStr(Month(tmpDate))51Testing软件测试网+A$LP.D1g^;rX
 tmpDay = CStr(Day(tmpDate))
f$ON(J\Mp0 '如果月或日不足两位,前面补051Testing软件测试网fOP`M K7rH3[r
 If Len(tmpMonth) < 2 Then51Testing软件测试网d%`BBI
    tmpMonth = "0" & tmpMonth51Testing软件测试网\X8Cc]#y
 End If
.@6W S9@)wJSU0 If Len(tmpDay) < 2 Then51Testing软件测试网Vx@W,{;D~|D.\
    tmpDay = "0" & tmpDay
y\9r Sj }*nl0 End If
~-W?t:\6i9hD0 tpmDate=tmpYear & tmpMonth & tmpDay51Testing软件测试网(Toe}C8a p7`0Rt+j
   51Testing软件测试网5c3W^2I]9|
' strTimeStamp = CStr(Year(Now)) & CStr(Month(Now)) & CStr(Day(Now)) _
}){ o#h3J1?0'  & "_" & CStr(Hour(Now)) & CStr(Minute(Now)) & CStr(Second(Now))51Testing软件测试网\ I7qRE Dh
 strTimeStamp = tpmDate & "_" & tmpTime51Testing软件测试网M"M!d)b j;d
 strFile = strDesktopFolder & "/[测试案例]" & Environment("TestName") & "_[测试机器]" & Environment("LocalHostName") & "_[测试时间]" & strTimeStamp & "_Error.png"   '组合出截图文件的名称51Testing软件测试网 I/\a1\)J%R.i@
 '对Desktop截图并保存
$r1u4`+u1dZ^-h2`!~0 Desktop.CaptureBitmap strFile
8?%e*R:}d"B'~RWL;\f0 51Testing软件测试网~2l%K2Qv0dk _ J
 reporter.Filter = 051Testing软件测试网 t"}6K9]C
 Reporter.ReportEvent micFail,"案例失败","本处提交失败报告是为了避免下面因为数据问题导致错误报告没有正常提交。"51Testing软件测试网o)qZ3a j+S_
 reporter.Filter = 3
R}yP%jPh0 set WshShell = CreateObject("WScript.Shell")
M*yt0q*Gb0~ h4t(S0 WshShell.SendKeys "{ENTER}"
B ^(v+U5d s[0 WshShell.SendKeys "{ENTER}"51Testing软件测试网~j9Ysy
 strStepInfo = "Test(" & Environment("TestName") & ")-Action(" & Environment("ActionName") & ") 发生非预期错误,测试退出"51Testing软件测试网+x5O5`kOvPP
' strDetails = "错误编号:" & CStr(Err.Number) & ",错误描述:" & Err.Description51Testing软件测试网 M.Gf5\.C:@Y;Aq}
 On Error Resume Next
GJ:Fk#db'Y0 oClass=Object.GetTOProperty("micclass")51Testing软件测试网umTkr$y ]PkL
 oName=Object.GetTOProperty("name")
o {)q!vLvL0 reporter.Filter = 051Testing软件测试网$PG _|3^2P W O x
 Reporter.ReportEvent micFail, strStepInfo, oClass & "(" & Chr(34) & oName & Chr(34) & ")." & Method & " " & Arguments(0) & " 出现错误,错误编号:" & retVal
9]4iq-K'K2L0        ' Arguments应该是1个或多个参数,此处只考虑了1个的情况,以后需要维护。
l_,Qg1qV~6V0 reporter.Filter = 3
Gqt shLG'Ag0 '清除Error并退出Test
ci_#l{x0 If err.number<>0 Then51Testing软件测试网7n9X6o ^,c3^5Kk#b
            Err.Clear
`0Y`8{W0 End If
0j_1s@ L"h]0' Reporter.ReportEvent micFail, strStepInfo, Method & " " & Arguments(0) & " 出现错误,错误编号:" & retVal
:u!d2XS `x0 On Error Goto 0
mz~IL kvQ#^0 systemutil.CloseProcessByName("iexplore.exe")51Testing软件测试网5pT*a$os5a
 ExitTest
6c/mp8MJ;HU"H.mk`O0End Function

TAG:

 

评分:0

我来说两句

Open Toolbar