QTP出错处理机制

Stop run 模式发生错误后,就抛出异常(可用Err对象得到异常里的错误信息),中止本函数,并一层一层的返回到上一层函数,最后到达Action函数后(Action本身也可以看成是个函数),就停止整个Test的执行。  在一层一层的返回上层函数的过程中,如果某个中间函数有On Error Resumt Next/On Error goto 0,就会把错误拦截下来,这个中间函数会继续往下执行,不会中止函数并返回上一层函数。

在主控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

function CaseFunctionName()
  msgbox "test 111"
  JavaWindow("111").Close
  msgbox "test 222"
  JavaWindow("222").Close
  msgbox "test 333"
  JavaWindow("333").Close
end function

备注:
如果以Resource->Libraries加载的vbs执行时的错误是无法返回主控的action,可以使用executefile的才可以
通常的做法是动态加载


'executefile "filename.vbs"
'execute "call "& functionname

posted @ 2009-06-11 19:51  大耳朵  阅读(483)  评论(0编辑  收藏  举报