QTP中用于场景恢复的函数
在制作场景恢复的时候可以选择调用函数来解决,下面的函数就是为此写的。因为之前用的场景恢复只报错了,看报告后大概了解了Object、Method、Arguments、retVal等参数的意义,于是写了这个方法,一方面可以截图,另一方面可以在报告中看到哪个对象出问题了。因为我经常是通过公司的自动化平台调用测试案例,一般晚上或凌晨执行,第二天看结果,看结果的时候一般直接从QC打开报告查看,这样方便自己定位问题。
这个方法的作用我简单描述一下:首先是指定一个目录,然后检查是否从QC调用的(因为有时候自己单机执行也用到这个),如果是就记录测试集的名称,如果不是就放到SingleTest目录,然后判断对应的目录是否存在,不存在就创建目录。之后是创建日期时间标签,然后把文件完整路径组合起来,并加上了案例名称,测试机器等等(因为有很多台机器,方便查看是否某台机器出问题了)。之后模拟2次回车按键是防止有异常对话框存在,然后把原来的对象语句自己还原回来,这样如果是某个对象执行什么操作的时候语句出错,就可以在报告里看到了。
当然并不是很完善,比如时间标签的分秒没有加0的判断,Arguments其实是个集合,只不过我只考虑了1个的情况,没考虑多个的情况。
需要用这个的朋友可以自己稍微维护改进一下。使用方法就是自己创建一个场景恢复,然后选择指定文件里的函数,下面的函数最好单独保存为一个文件,因为我之前把他和我的函数库放在一起,发现里面的初始化函数被执行了2次,可能和场景恢复有关,分开后就没问题了。
用于恢复场景控制。Function RecoveryFunctions(Object, Method, Arguments, retVal)
有错误发生时,对Desktop进行截图并保存
SaveTestError ""
Set objWS = CreateObject("WScript.Shell")
strDesktopFolder = "T:/TestData/测试组/测试截图/"
If QCUtil.IsConnected then
If TypeName(QCUtil.CurrentTestSet) "Nothing" Then
set CurrentTSTest = QCUtil.CurrentTestSet
strDesktopFolder = strDesktopFolder CurrentTSTest.Name 如果从QC的测试集运行的,则保存到测试集名字的目录下
Else
strDesktopFolder = strDesktopFolder "SingleTest" 如果不是从QC运行,保存到SingleTest目录下
End If
Else
strDesktopFolder = strDesktopFolder "SingleTest"
End If
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(strDesktopFolder) Then
Set objFolder = objFSO.GetFolder(strDesktopFolder)
Else
Set objFolder = objFSO.CreateFolder(strDesktopFolder)
End If
确定保存文件的名称
tmpTime=Time()
t=Split(tmpTime,":")
If Len(t(0)) 2 Then
t(0) = "0" t(0)
End If
tmpTime=t(0) t(1) t(2)
tmpDate=CStr(Date())
tmpYear = CStr(Year(tmpDate))
tmpMonth = CStr(Month(tmpDate))
tmpDay = CStr(Day(tmpDate))
如果月或日不足两位,前面补0
If Len(tmpMonth) 2 Then
tmpMonth = "0" tmpMonth
End If
If Len(tmpDay) 2 Then
tmpDay = "0" tmpDay
End If
tpmDate=tmpYear tmpMonth tmpDay
strTimeStamp = CStr(Year(Now)) CStr(Month(Now)) CStr(Day(Now)) _
"_" CStr(Hour(Now)) CStr(Minute(Now)) CStr(Second(Now))
strTimeStamp = tpmDate "_" tmpTime
strFile = strDesktopFolder "/[测试案例]" Environment("TestName") "_[测试机器]" Environment("LocalHostName") "_[测试时间]" strTimeStamp "_Error.png" 组合出截图文件的名称
对Desktop截图并保存
Desktop.CaptureBitmap strFile
reporter.Filter = 0
Reporter.ReportEvent micFail,"案例失败","本处提交失败报告是为了避免下面因为数据问题导致错误报告没有正常提交。"
reporter.Filter = 3
set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
strStepInfo = "Test(" Environment("TestName") ")-Action(" Environment("ActionName") ") 发生非预期错误,测试退出"
strDetails = "错误编号:" CStr(Err.Number) ",错误描述:" Err.Description
On Error Resume Next
o "micclass")
oName=Object.GetTOProperty("name")
reporter.Filter = 0
Reporter.ReportEvent micFail, strStepInfo, oClass "(" Chr(34) oName Chr(34) ")." Method " " Arguments(0) " 出现错误,错误编号:" retVal
Arguments应该是1个或多个参数,此处只考虑了1个的情况,以后需要维护。
reporter.Filter = 3
清除Error并退出Test
If err.number 0 Then
Err.Clear
End If
Reporter.ReportEvent micFail, strStepInfo, Method " " Arguments(0) " 出现错误,错误编号:" retVal
On Error Goto 0
systemutil.CloseProcessByName("iexplore.exe")
ExitTest
End Function
====================================分割线================================
最新内容请见作者的GitHub页:http://qaseven.github.io/
相关文章
- Google Earth Engine——如何下载里利用evaluate函数和for循环叠加使用遍历所有单景影像并导出(ui.button)
- 第八十八章 SQL函数 $LISTTOSTRING
- LR多分类与softmax多少分类,他们的目标函数是什么?他们的区别是?他们分别适用于什么场景?
- Python-OpenCV难道比C++_OpenCV快?以调用Canny边缘检测函数为例
- 修改系统时间(取得服务器时间,使用SetLocalTime API函数,需要UAC权限)
- React生命周期钩子函数详解
- 【内存操作函数】
- settimeout 传递带有参数的函数
- JavaScript函数重载
- linux系统fflush函数
- SqlServer Split函数
- Opencv2函数cvfindcontours在MFC框架下程序运行失败问题
- matmul函数
- [Mysql] TRIM函数 | RTRIM函数 | LTRIM函数
- [Pandas] assign()函数