1. 概述
本文针对QTP提供的运行时错误处理机制进行详细描述。内容包括各种错误处理方式的功能的介绍,各种机制的作用范围的分析,以及错误处理机制同时作用时的优先级别的分析。
2. 三种错误处理方式介绍
Quick Test Professional 中有三种错误处理机制,在这里定义为:
全局错误响应: Test Setting 中Run 设置
VBScript On Error 错误处理: On Error Resume Next
错误恢复场景: Recovery Scenarios
2.1 全局错误响应
全局错误响应在Test Setting 的Run 选项中进行设置:【File】—>【Settings】—>【Run】—>【When error occurs during run session】
QTP四种全局错误响应设置选项如下:
pop up message box: Quick Test 在出现错误时显示一个错误消息对话框
process to next action iteration:Quick Test 出现错误时继续下一个Action 循环
stop run: Quick Test 在出现错误时停止测试
process to next step:Quick Test 在出现错误时跳过错误语句,继续下一步骤
全局错误响应是QTP 的系统缺省错误处理,就是说当没有使用其他错误处理方式时,系统会自动调用在这里指定的方式进行错误处理
2.2 VBScript 的On Error 错误处理方式
由于QTP 使用了VBScript 作为脚本语言,自然地,VBScrip 的错误处理方式在QTP 中都适用。在VBScript中,与错误处理相关的三者为:
On Error Resume Next 语句
On Error GoTo 0 语句
Err 对象
2.2.1 On Error Resume Next
一旦这个语句已被处理,脚本引擎将继续运行后面的程序,而不理会已经发现的任何错误。
2.2.2 On Error GoTo 0
使用On Error Goto 0 语句恢复缺省的错误处理行为。在运行这个语句后,发生的运行期错误将导致缺省错误处理。在QTP 中,缺省错误处理就是全局错误响应。
2.2.3 Err 对象
Err 对象重要的属性有三个:Number, Source, Description,分别是错误号,错误来源,错误描述.Err 对象会在运行时错误发生的时候赋予新的值,旧的值会被舍弃。Err 对象不会受到函数调用的影响,它完全是全局的。Err 对象可以用Clear 方法清空,任何时候调用On Error Resume Next 或者On Error GoTo 0 的时候,都会清空Err 对象。
2.3 恢复场景Recovery Scenarios
Resources_Recovery Scenarios Manager…可以创建恢复场景。具体请参考帮助文档,这里只是说明对于运行错误的处理。在恢复场景中触发事件TriggerEvent 中的一个选项是Test Run Error,表示在运行过程中遇到错误时所采取的恢复处理方式。我们看一看下面对哪几种错误进行恢复处理,即错误恢复的触发条件:
Any Error Item in list or menu is not unique Item in list or menu not found More than one object responds to the physical description Object is disable Object not found Object not visible |
恢复处理(Recovery Operation)有以下几种方式:
Keyboard or mouse operation Close application process Function call Restart Microsoft Windows |
从恢复场景的触发条件可以看出,所有错误处理都是针对测试对象发生的错误而言的(Any Error 指列表中所有的其他错误类型),它并不处理被零除、非法赋值,内存分配错误等等VBScript 的运行时错误。这是和其它两种错误处理方式不同之处。为了说明这一点,我们不妨再看看Recovery Operation 中OperationType 如果选择Function Call,函数原型定义如下所示,所有的函数参数都必须包含有被测对象,触发函数必须遵循原型定义,否则函数无法执行。