QTP错误处理机制

发表于:2014-1-28 11:15

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:llbacyal    来源:51Testing软件测试网采编

  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,函数原型定义如下所示,所有的函数参数都必须包含有被测对象,触发函数必须遵循原型定义,否则函数无法执行。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号