【转载】QTP错误处理机制

上一篇 / 下一篇  2011-01-30 17:22:21 / 个人分类:转载

一、if Err.Number<> 0 Then

 

抛出异常处理函数

示例:

 If Err.Number <> 0 Then
    Reporter.ReportEvent 1, "查找字符串",  " Error # " & CStr(Err.Number) & " " & Err.Description & Err.Source
  End If

其中

Err.Number  :错误码

Err.Description :错误描述

Err.Source :错误来源对象

 

二、On Error Resumt Next/On Error goto 0

 

以下内容转载自http://makar.javaeye.com/blog/280272

QTP提供全局错误处理模式,有Popup  message box,Process next action iteration,Stop run,Process next step这四种。

QTP也提供On Error Resumt Next/On Error goto 0的局部错误处理模式。可以在局部范围内实现Process next step的效果,忽略错误继续执行后续步骤。这个局部错误处理模式,象局部变量优先于全局变量并且只在本函数内有效一样,优先级高于全局错误处理模式,同时只在本函数局部范围(Action本身也可以看成是个函数)内生效。它不会影响外层函数的错误处理模式,但会改变局部范围内调用的子孙函数,将子孙函数的错误处理模式改为Stop Run!

四种全局错误处理模式的区别在于: 

1、Process next step 
  这种模式忽略错误继续往下执行,可以通过Err.Number来判断是否发生了错误。
  因为Case函数的每个步骤都是密切相关的,不可能忽略错误继续往下执行下一步骤
  也不可能在每个步骤每个语句后面都加错误检查,这样错误处理代码太多了
  在很多个步骤后再检查也是不严谨的,会错上加错,并因此失去第一个错误的信息
  所以,这种模式不可取
  
2、Stop run 
  这种模式发生错误后,就抛出异常(可用Err对象得到异常里的错误信息),中止本函数,并一层一层的返回到上一层函数,最后到达Action函数后(Action本身也可以看成是个函数),就停止整个Test的执行。
  在一层一层的返回上层函数的过程中,如果某个中间函数有On Error Resumt Next/On Error goto 0,就会把错误拦截下来,这个中间函数会继续往下执行,不会中止函数并返回上一层函数。
  
3、Popup  message box 
  这种模式在发生错误时,弹出对话框让用户选择Stop、Retry、Skip、Debug。
  主控Test要全自动执行,不能要求人工干预,所以这种模式不可取
  
4、Process next action iteration 
  这种模式跟Stop run类似,但是它只是退出本次Action循环,还会继续下一个Action循环。
  主控Test没有继续下一个Action循环的需求,所以这种模式不可取。

经过上述分析,我们可以得到结果,我们的主控Test,全局错误处理模式使用Stop run模式,同时在主控函数里使用On Error Resumt Next/On Error goto 0的局部错误处理模式来调用Case函数。这样使得Case函数和其子函数里发生错误时,会停止执行,并层层返回到主控函数这里,并由主控函数来拦截错误,记录错误。然后主控函数就可以正常的继续执行下一个Case函数了,不用担心会导致整个Test停止执行。

主控函数调用Case函数的详细过程如下:

Err.Clear
On Error Resume Next
call CaseFunctionName
If Err.Number <> 0 Then
  WriteLog Err.Number  '错误码
  WriteLog Err.Description  '错误描述
  WriteLog Err.Source  '错误来源对象,不过好像没啥用
End
Err.Clear
On Error goto 0


TAG:

 

评分:0

我来说两句

日历

« 2024-04-24  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 8460
  • 日志数: 13
  • 建立时间: 2011-01-28
  • 更新时间: 2011-04-07

RSS订阅

Open Toolbar