多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

QTP中用于场景恢复的函数-自动化测试

更新时间:2022-05-18 09:27:20 作者:多测师 浏览:99

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

QTP中用于场景恢复的函数-自动化测试

  这个方法的作用我简单描述一下:首先是指定一个目录,然后检查是否从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

  oClass=Object.GetTOProperty("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

  以上内容为大家介绍了自动化测试中的QTP中用于场景恢复的函数,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部