UFT 中的错误处理

Error handling in UFT

请建议我如何处理这种情况。问题是我得到了一个错误 在从 excel 执行第 1 行的第一次迭代期间的语句 2 然后如何跳过剩余的语句并使用 excel 行 2.

开始执行语句 1
Browser("ABC").Page("ABC").WebEdit("ABC").Set "123"
Dim i
Dim iRow
iRow = datatable.GetRowCount

For i = 1 to iRow

Statement 1- Browser("ABC").Page("").WebEdit("ABC").Set DataTable("DT", dtGlobalSheet)
Statement 2- Browser("ABC").Page("").WebEdit("ABC").Set DataTable("DT", dtGlobalSheet)
Statement 3- Browser("ABC").Page("").WebEdit("ABC").Set DataTable("DT", dtGlobalSheet)
Statement 4- Browser("ABC").Page("").WebEdit("ABC").Set DataTable("DT", dtGlobalSheet)
Statement 5- Browser("ABC").Page("").WebEdit("ABC").Set DataTable("DT", dtGlobalSheet)

datatable.SetNextRow

Next

Excel sheet

Row 1 Row 2 Row 3

step1) 创建一个名称为 "Action2" 的新 Action 并将代码放入 for loop

step2)导入数据到Action2本地数据table

step3) 创建一个恢复场景启用检查每一行恢复功能如

     function RecoveryFunction()
         ExitActionIteration
     End function

step4) 从 Action1 调用 Action2 with allIterations

首先,如果您的测试在 File->Settings->Run 中设置为 Run on all rows 那么您不需要代码中的循环- UFT 知道它需要对数据中的每一行进行迭代 table。

其次,您所需要的只是语句,然后检查其成功和任何错误处理。如果出现错误,只需退出测试迭代,UFT 将进入下一个。

我修改后的代码版本:

Browser("ABC").Page("ABC").WebEdit("ABC").Set "123" ' sets an initial value

Browser("ABC").Page("").WebEdit("ABC").Set DataTable("DT1", dtGlobalSheet)
If Browser("ABC").Page("").WebEdit("ABC").GetROProperty("value") <> DataTable("DT1", dtGlobalSheet) Then
    ' Handle error popup if it exists
    Browser("ABCError").Page("").WebButton("OK").Click
    ExitTestIteration
End If
Browser("ABC").Page("").WebEdit("CDE").Set DataTable("DT2", dtGlobalSheet)
If Browser("ABC").Page("").WebEdit("CDE").GetROProperty("value") <> DataTable("DT2", dtGlobalSheet) Then
    ' Handle error popup if it exists
    Browser("ABCError").Page("").WebButton("OK").Click
    ExitTestIteration
End If
Browser("ABC").Page("").WebEdit("FGH").Set DataTable("DT3", dtGlobalSheet)
If Browser("ABC").Page("").WebEdit("FGH").GetROProperty("value") <> DataTable("DT3", dtGlobalSheet) Then
    ' Handle error popup if it exists
    Browser("ABCError").Page("").WebButton("OK").Click
    ExitTestIteration
End If
Browser("ABC").Page("").WebEdit("JKL").Set DataTable("DT4", dtGlobalSheet)
If Browser("ABC").Page("").WebEdit("JKL").GetROProperty("value") <> DataTable("DT4", dtGlobalSheet) Then
    ' Handle error popup if it exists
    Browser("ABCError").Page("").WebButton("OK").Click
    ExitTestIteration
End If
Browser("ABC").Page("").WebEdit("MNO").Set DataTable("DT5", dtGlobalSheet)
If Browser("ABC").Page("").WebEdit("MNO").GetROProperty("value") <> DataTable("DT5", dtGlobalSheet) Then
    ' Handle error popup if it exists
    Browser("ABCError").Page("").WebButton("OK").Click
    ExitTestIteration
End If

我假设您在问题中重复设置语句 1 等应该模拟设置多个不同的 WebEdit 文本框并编码 5 组作为示例。如果随着迭代的进行,任何文本框 而不是 设置为指定的数据 table 列值(在我的示例中为 DT1 到 DT5),那么 If 条件将得到满足,导致尝试处理错误弹出窗口(您需要修改我猜测的代码以满足您的要求),然后退出测试迭代。退出迭代将触发一个新的迭代开始,因此请确保在退出之前处理任何错误弹出窗口。

如果所有 WebEdit 都成功完成,那么 UFT 将重复您的数据 table.

中定义的所有迭代

您需要决定一件事:您是要使用数据驱动测试的 UFT 方式,还是要完全自己控制

选项 1 - 执行 UFT 方式

  1. 告诉 Uft 正确解释数据Table - 这意味着执行测试用例的次数与全局中的行数一样多Sheet:应该检查 File->Settings->Run-> Run on all rows
  2. 告诉 UFT 我们处于数据驱动模式。在同一页面设置设置; When error occurs during run session to proceed to Next Action Iteration - uft 将从头开始整个事情但下一行
  3. 在操作 1 中添加五个语句(仅此而已,UFT 负责其余部分)

选项 2 - 按照您的方式进行

  1. 看来你已经在做了。您实现循环并遍历 Table
  2. 的所有行
  3. 将 5 条语句提取到函数(和函数库)中
  4. 创建一个以监督方式调用前一个函数的函数(和函数库)

伪代码

ACTION1

ForEach row In DataTable.GlobalSheet
    ExecuteStatementsSupervised row
Next


FUNCTION LIBRARY

Function ExecuteStatementsSupervised(row)
    On Error Resume Next
    ExecuteStatements row

    If Err.Number <> 0  Then
        Reporter.ReportEvent  micFail, "OOPS Failed"
    End If
    On Error GoTo 0
End Function


SubExecuteStatements(row)
    Statement1
    Statement2
    ....
    Statement5
End Sub

因此,在 Action1 中,我们迭代数据Table,在 Supervisor 函数中,如果发生任何事情,我们都会捕获错误,并确保迭代可以继续进行。真正的功能本身,只是执行步骤