📜  QTP-错误处理(1)

📅  最后修改于: 2023-12-03 15:34:34.551000             🧑  作者: Mango

QTP 错误处理

在测试过程中,不可避免地会出现各种各样类型的错误,如对象无法识别、超时等等。 在使用 QTP 进行自动化测试时,我们需要学习如何捕获和处理这些错误,在保证测试质量和稳定性的同时还能提高测试效率。

错误类型

QTP 中的错误可以归类为以下 4 种类型:

  • 脚本错误:脚本中语法错误会导致脚本运行失败。
  • 运行时错误:脚本运行期间发生的错误,如对象无法识别、超时等。
  • 有条件的运行时错误:发生在运行时的非致命性错误,如没有找到对象或某些属性无效。
  • 清理错误:如果测试过程中发生错误并且没有被处理,则这些错误将被认为是清理错误。
错误处理
异常处理

在 QTP 中,我们可以使用 On Error 语句来捕获运行时错误和有条件的运行时错误。 当发生运行时错误时,QTP 将跳过错误语句并继续执行下一条语句。 我们可以在捕获错误之后执行某些操作,如记录错误日志、截图等。

以下是一个示例:

On Error Resume Next
Browser("Google").Page("Google").WebEdit("q").Set "QTP"
Browser("Google").Page("Google").WebButton("Search").Click

If err.Number <> 0 Then
  ReportEvent micWarning, "Search", "Search button not found"
End If

在上述示例中,我们使用 On Error Resume Next 语句来捕获运行时错误。 如果在第二行代码中无法找到“Google”浏览器,则会跳过该行并继续运行下一条语句。 如果发生错误,我们将使用 ReportEvent 函数记录错误信息。

强制错误处理

除了使用 On Error 语句之外,我们还可以使用 Err.Raise 语句来自行引发错误。

以下是一个示例:

If Browser("Google").Page("Google").WebEdit("q").Exist(10) Then
  ' Do something
Else
  Err.Raise 101, , "Search box not found"
End If

在上述示例中,我们使用 Exist 方法检查搜索框是否存在。 如果搜索框不存在,则会引发错误,并且使用 Err.Raise 语句自行定义错误消息。

清理错误处理

当 QTP 运行结束时,任何未处理的错误将被视为清理错误。我们可以使用 On Error Resume Next 语句方便地处理清理错误。 我们可以将清理错误信息记录在错误日志中,以帮助我们确定发生了什么问题。

以下是一个示例:

On Error Resume Next
Browser("Google").Close
Set Browser = Nothing

If err.Number <> 0 Then
  ReportEvent micWarning, "Cleanup", "Error closing browser"
End If

在上述示例中,我们使用 On Error Resume Next 语句来捕获清理错误。 如果关闭浏览器失败,则会跳过该行并继续执行下一条语句。 如果发生错误,我们将使用 ReportEvent 函数记录错误信息。

结论

错误处理是自动化测试的重要组成部分,可以大大提高测试质量和效率。 在 QTP 中,我们可以使用 On ErrorErr.Raise 语句来捕获和处理各种类型的错误并记录错误信息。 除此之外,我们还可以使用 ReportEvent 函数将错误消息记录在日志中,以帮助我们确定发生了什么问题。