- QTP 教程
- QTP - 首页
- QTP - 简介
- QTP - 测试自动化
- QTP - 环境设置
- QTP - 录制和回放
- QTP - 对象库
- QTP - 动作
- QTP - 数据表
- QTP - 检查点
- QTP - 同步
- QTP - 智能识别
- QTP - 调试
- QTP - 错误处理
- QTP - 恢复方案
- QTP - 环境变量
- QTP - 库文件
- QTP - 测试结果
- QTP - GUI 对象
- QTP - 虚拟对象
- QTP - 访问数据库
- QTP - 使用 XML
- QTP - 描述性编程
- QTP - 自动化对象模型
- QTP - 框架
- QTP - 框架设计
- QTP 有用资源
- QTP - 问答
- QTP - 快速指南
- QTP - 有用资源
- QTP - 讨论
QTP - 错误处理
在 QTP 中处理错误的方法有很多种。在使用 QTP 时,可能会遇到三种类型的错误:
- 语法错误
- 逻辑错误
- 运行时错误
错误类型
语法错误
语法错误是指代码中的打字错误或不符合 VBScript 语法规则的代码片段。语法错误在代码编译时发生,在修复错误之前无法执行。
要验证语法,可以使用键盘快捷键 Ctrl+F7,结果将如下所示。如果窗口未显示,可以导航到“视图”→“错误”。
逻辑错误
如果脚本在语法上正确,但产生意外的结果,则称为逻辑错误。逻辑错误通常不会中断执行,但会产生不正确的结果。逻辑错误可能由于各种原因发生,例如:错误的假设或对需求的误解,有时是不正确的程序逻辑(使用 do-while 而不是 do-Until)或无限循环。
检测逻辑错误的一种方法是进行同行评审,并验证 QTP 输出文件/结果文件,以确保工具按预期执行。
运行时错误
顾名思义,这种错误发生在运行时。这种错误的原因是脚本尝试执行某些操作但无法执行,脚本通常会停止,因为它无法继续执行。运行时错误的典型示例包括:
- 文件未找到,但脚本尝试读取文件
- 对象未找到,但脚本尝试操作该特定对象
- 将数字除以零
- 访问数组元素时数组索引超出范围
处理运行时错误
有多种方法可以处理代码中的错误。
1. 使用测试设置 - 通过导航到“文件”>>“设置”>>“运行”选项卡(如下所示)可以在测试设置中定义错误处理。我们可以选择任何指定的设置并单击“确定”。
2. 使用 On Error 语句 - ‘On Error’ 语句用于通知 VBScript 引擎处理运行时错误的意图,而不是允许 VBScript 引擎显示不友好的错误消息。
On Error Resume Next - On Error Resume Next 通知 VBScript 引擎在遇到错误时处理执行下一行代码。
On error Goto 0 - 这有助于测试人员关闭错误处理。
3. 使用 Err 对象 - Err 对象是 VBScript 中的内置对象,它捕获运行时错误号和错误描述,使我们能够轻松地调试代码。
Err.Number - Number 属性返回或设置一个数值,用于指定错误。如果 Err.Number 值为 0,则表示没有发生错误。
Err.Description - Description 属性返回或设置关于错误的简短描述。
Err.Clear - Clear 方法重置 Err 对象并清除与其关联的所有先前值。
示例
'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. 使用 Exit 语句 - Exit 语句可以与 Err 对象一起使用,根据 Err.Number 值退出测试、操作或迭代。让我们详细了解每个 Exit 语句。
ExitTest - 退出整个 QTP 测试,无论运行时迭代设置是什么。
ExitAction - 退出当前动作。
ExitActionIteration - 退出动作的当前迭代。
ExitTestIteration - 退出 QTP 测试的当前迭代并继续下一个迭代。
5. 恢复方案 - 遇到错误时,恢复方案将根据某些条件触发,并在单独的章节中详细介绍。
6. Reporter 对象 - Reporter 对象帮助我们将事件报告到运行结果。它有助于我们确定相关操作/步骤是通过/失败。
'Syntax: Reporter.ReportEventEventStatus, ReportStepName, Details, [ImageFilePath] 'Example Reporter.ReportEvent micFail, "Login", "User is unable to Login."