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
 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

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-08-31 00:53:42

QTP中用于场景恢复的函数的相关文章

C语言中用于产生随机数的函数使用方法总结_C 语言

在UNIX操作系统和window的操作系统上,我们知道有一个函数rand,它就是用来产生随机数的函数API接口,那么它的原理如何实现? 如果约定a1=f(seed),an+1=f(an),那么可以得到一个序列a1,a2,a3..an,那么要制作一个伪随机函数rand,只需要让它每调用一次就返回序列的下一个元素就行.其实就是相当于第1次调用rand返回a1,第2次返回a2,-,第n次返回an,这样每次返回的数值都不一样,也就是相当于随机数了.但是其实不是真正的随机数,真正的随机数是使用物理现象产生

Delphi中用于建立快捷方式的函数: CreateShortcut

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; procedure Button1Click(Sender:

QTP场景恢复的实践和总结

自动化测试的优点在于快速.可靠.可重复.可重用.无疲劳,是对繁重的手工测试的一次解放,适用于回归测试.自动化还有一个特点是无人值守,测试人员要做的是通过看 REPORT ER来判断系统是否存在缺陷.当然,脚本执行的过程中或多或少会出现ERROR,由于无人值守的特点,接下来的脚本就会不能运行,这也是为什么在自动化脚本中弹出框要用POP函数的原因.QTP提供的场景恢复可以解决这个问题,我将自己学习实践的过程与大家分享,有不合适的地方请大家指正. 场景恢复可以看做一种嵌入式机制,是QTP脚本的一个可安

php.ini中最好禁止的一些函数(diables

PHP有好多的函数,有些函数很不安全,所以我们有必要禁掉. 那么哪些函数很危险呢. phpinfo()  功能描述:输出 PHP 环境信息以及相关的模块.WEB 环境等信息.  危险等级:中    passthru()  功能描述:允许执行一个外部程序并回显输出,类似于 exec().  危险等级:高    exec()  功能描述:允许执行一个外部程序(如 UNIX Shell 或 CMD 命令等).  危险等级:高    system()  功能描述:允许执行一个外部程序并回显输出,类似于

简介Linux中的可重入函数和不可重入函数

可重入函数 可重入函数(即可以被中断的函数)可以被一个以上的任务调用,而不担心数据破坏.可重入函数在任何时候都可以被中断,而一段时间之后又可以恢复运行,而相应的数据不会破坏或者丢失. 可重入函数使用的变量有两种情况: 1.使用局部变量,变量保存在CPU寄存器中或者堆栈中: 2.使用全局变量,但是这时候要注意保护全局变量(防止任务中断后被其它任务改变变量). void strcpy(*dest,*src) { while(* dest++ = *src ++){;} *dest = NUL; }

Go语言中的流程控制结构和函数详解_Golang

这小节我们要介绍Go里面的流程控制以及函数操作. 流程控制 流程控制在编程语言中是最伟大的发明了,因为有了它,你可以通过很简单的流程描述来表达很复杂的逻辑.Go中流程控制分三大类:条件判断,循环控制和无条件跳转. if if也许是各种编程语言中最常见的了,它的语法概括起来就是:如果满足条件就做某事,否则做另一件事. Go里面if条件判断语句中不需要括号,如下代码所示: 复制代码 代码如下: if x > 10 {     fmt.Println("x is greater than 10&

qtp自动化测试实践:【软件测试自动化-QTP系列讲座 46】== JScript在QTP中的终极探究

上一次讲座我们简单介绍了下QTP中如何执行javascript,其实说穿了也就是借助QTP的封装方法来进行执行javascript,主要还是想照顾下新手所以简单介绍一下这块内容,可能对一些测试高手们来说不值一提,但是今天这次讲座相信一定会让你眼前一亮,应该可以说本次课程是领先技术讲座的高潮.擦亮你的眼睛,来看如何真正意义上在QTP编辑器中直接执行JAVASCRIPT,并把try catch应用到实际应用中.从此摆脱vbs那种渣一样的错误捕获. 在这之前请允许我来介绍一个组件,它就是MSHTML组

Sql Server中的日期与时间函数

Sql Server中的日期与时间函数: 1.  当前系统日期.时间     select getdate()  2. dateadd  在向指定日期加上一段时间的基础上,返回新的 datetime 值:   例如:向日期加上2天    select dateadd(day,2,'2004-10-15')  --返回:2004-10-17 00:00:00.000 3. datediff 返回跨两个指定日期的日期和时间边界数:   select datediff(day,'2004-09-01'

php中几个字符处理函数的说明

函数 字符串分割与连接函数: 代码: array explode(string delimiter, string data) 使用字符串 dellimiter 把 data 分割成一个数组返回 类似函数:split() 代码: string implode(array data, string dellimiter) 作用和explode()正好相反,把数组用dellimiter连接成一个长字符串 函数别名:join() 代码: array split(string pattern, stri