📜  QTP-错误处理

📅  最后修改于: 2020-12-06 10:42:24             🧑  作者: Mango


QTP中有多种处理错误的方法。使用QTP时可能会遇到三种错误,一种会遇到。他们是-

  • 语法错误
  • 逻辑错误
  • 运行时错误

错误类型

语法错误

语法错误是拼写错误或一段未经VBscripting语言语法确认的代码。语法错误在代码编译时发生,并且只有在错误修复后才能执行。

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

错误处理

逻辑错误

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

检测逻辑错误的一种方法是执行对等检查,并验证QTP输出文件/结果文件,以确保该工具执行了应有的操作。

运行时错误

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

  • 找不到文件,但脚本试图读取文件
  • 找不到对象,但脚本正在尝试对该特定对象执行操作
  • 将数字除以零
  • 访问数组元素时数组索引超出范围

处理运行时错误

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

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

错误处理

2.使用On Error语句-“ On Error”语句用于通知VBScript引擎意图由测试人员处理运行时错误,而不是允许VBScript引擎显示对用户不友好的错误消息。

  • 继续执行错误恢复下一步-继续执行错误恢复下一步通知VBScript引擎在遇到错误时处理执行下一行代码。

  • 出现错误时转到0-这有助于测试人员关闭错误处理。

3.使用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 Statement -Exit Statement可以与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."