Qtp 简明教程

QTP - Error Handling

在 QTP 中处理错误有多种方法。在使用 QTP 时,可能遇到三种可能的错误类型:

  1. Syntax Errors

  2. Logical Errors

  3. Run Time Errors

Error Types

Syntax Errors

语法错误是与 VBScript 语言语法不符的错误或代码片段。语法错误发生在代码编译时,在这些错误得到修复之前无法执行。

若要验证语法,可以使用键盘快捷键 Ctrl+F7,结果显示在下边。如果窗口未显示,则可以导航至“视图”→“错误”。

qtp error handling 1

Logical Errors

如果脚本的语法正确,但是生成了意外的结果,则称为逻辑错误。逻辑错误通常不会中断执行,但是会生成错误的结果。逻辑错误可能由于各种原因导致,例如:错误的假设或需求错误理解,有时还会产生错误的程序逻辑(使用 do-while 代替 do-Until)或无限循环。

检测逻辑错误的一种方法是进行同行评审,还要验证 QTP 输出文件/结果文件,以确保该工具按预期方式执行。

RunTime Errors

顾名思义,此类错误发生在运行时。此类错误的原因是脚本尝试执行某项操作但无法执行,而且脚本通常停止执行,因为它无法继续执行。运行时错误的经典示例是:

  1. 文件不存在,但脚本尝试读取该文件

  2. 对象不存在,但脚本尝试针对该特定对象执行操作

  3. 将数字除以零

  4. 访问数组元素时,数组索引超出界限

Handling Run-Time Errors

处理代码中错误有多种方法。

1. Using Test Settings - 可以通过导航至“文件”>>“设置”>>“运行”选项卡来在测试设置中定义错误处置,如下所示。我们可以选择任何指定设置,然后单击“确定”。

qtp error handling 2

2. Using On Error Statement - 测试者可以将“On Error”语句用于通知 VBScript 引擎其打算处理运行时错误,而不是允许 VBScript 引擎显示用户不友好的错误消息。

  1. On Error Resume Next - On Error Resume Next 会通知 VBScript 引擎当遇到错误时处理执行下一行代码。

  2. On error Goto 0 - 这有助于测试人员关闭错误处理。

3. Using Err Object - 错误对象是 VBScript 内的一个内置对象,可以捕获我们能够方便调试代码的运行时错误编号和错误描述。

  1. Err.Number - Number 属性返回或设置一个指定错误的数字值。如果 Err.Number 值为 0,则表示未发生错误。

  2. Err.Description - Description 属性返回或设置一个关于错误的简要描述。

  3. Err.Clear - Clear 方法会重置错误对象,并清除与其关联的所有先前值。

Example

'Call  the function to Add two Numbers Call Addition(num1,num2)

Function Addition(a,b)
   On error resume next
      If NOT IsNumeric(a) or IsNumeric(b) Then
         Print "Error number is  " &  err.number & " and description is :
            " &  err.description
         Err.Clear
         Exit Function
      End If
   Addition = a+b

   'disables error handling
   On Error Goto 0
End function

4. Using Exit Statement − Exit 语句可以与 Err 对象结合使用,以基于 Err.Number 值退出测试、操作或迭代。让我们详细了解每个 Exit 语句。

  1. ExitTest − 不管运行时迭代设置是什么,退出整个 QTP 测试。

  2. ExitAction − 退出当前操作。

  3. ExitActionIteration − 退出操作的当前迭代。

  4. ExitTestIteration − 退出 QTP 测试的当前迭代,并继续执行下一个迭代。

5. Recovery Scenarios − 遇到错误时,基于特定条件触发恢复场景,并在单独的章节中详细介绍。

6. Reporter Object − Reporter 对象帮助我们将事件报告给运行结果。它帮助我们识别相关的操作/步骤是通过/失败。

'Syntax: Reporter.ReportEventEventStatus, ReportStepName, Details,
[ImageFilePath]

'Example
Reporter.ReportEvent micFail, "Login", "User is unable to Login."