我创建了一个包含 1 个操作的测试,其中包含 n 个操作。有什么方法可以在n个动作中的每个动作执行后检查结果是失败还是通过并相应地进行?
不直接。
类似的想法是询问当前的运行结果状态,参见如何根据当前报告节点获取运行结果状态?,但目前尚未解决。
但是,您可以调用您的操作,并使用那里的返回值,如下所示:
ActionSucceeded=RunAction ("myTest [Action2]", oneIteration)
If not ActionSucceeded then
' The Action2 call signalled "failure" (false)
End If
这意味着
Action2
必须返回这样的结果,如下所示:
ExitActionIteration (false)
但是,请注意,需要使用 QTP 的 IDE 插入
RunAction
语句(插入/调用操作...),从而导致不带括号的 RunAction
调用。将其编辑到上面的作业表单(带括号)时,请确保在保存测试之前第一次就正确 - 因为 如果保存包含损坏的 RunAction
调用的测试,QTP 会取消与调用的测试的关联 ,即使您将脚本编辑回正确的语法,测试也会在运行时失败。这是由于 QTP 在脚本中不可见地保存了元信息,如果您保存了无效的操作调用,则该元信息将被丢弃。 (您可以看到何时发生这种情况,因为操作调用将从测试流程视图中消失。)
并且:如果您不将
RunAction
结果存储在变量中,而是直接使用它,如 所示
If not RunAction ("myTest [Action2]", oneIteration) then
' The Action2 call signalled "failure" (false)
End If
同样的混乱出现:QTP 不明白这是一个有效的操作调用,即使您将其编辑回原始形式,它也不会工作。
除了“小心”提示之外,
LoadAndRunAction
也是如此,它在运行时调用一个动作。 LoadAndRunAction
可以作为函数调用,如果调用的操作通过 ExitActionIteration
返回一个值,它就会返回该值。
还有另一个“注意”提示:
ExitActionIteration
确实需要将其参数括在括号中,即使它是Sub
(或至少称为Sub
)。我怀疑这是因为它不是真正的 Sub
或 Function
,而是以某种奇特的方式“修补”到 MS VBScript 引擎中的特殊语句。
解决方案是在LoadAndRunAction之后使用“Reporter.CurrentActionIterationStatus”。 将其添加到报告状态的条款中,例如“If Reporter.CurrentActionIterationStatus = 1 then ExitAction”
LoadAndRunAction 示例: LoadAndRunAction "{测试路径}","{操作名称}",rngAll,DataTable("{Value}") 如果 Reporter.CurrentActionIterationStatus = 1 则 ExitAction