UFT-我可以在运行期间获得某个操作的结果吗?

问题描述 投票:0回答:2

我创建了一个包含 1 个操作的测试,其中包含 n 个操作。有什么方法可以在n个动作中的每个动作执行后检查结果是失败还是通过并相应地进行?

testing vbscript automated-tests qtp hp-uft
2个回答
0
投票

不直接。

类似的想法是询问当前的运行结果状态,参见如何根据当前报告节点获取运行结果状态?,但目前尚未解决。

但是,您可以调用您的操作,并使用那里的返回值,如下所示:

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 引擎中的特殊语句。


0
投票

解决方案是在LoadAndRunAction之后使用“Reporter.CurrentActionIterationStatus”。 将其添加到报告状态的条款中,例如“If Reporter.CurrentActionIterationStatus = 1 then ExitAction”

LoadAndRunAction 示例: LoadAndRunAction "{测试路径}","{操作名称}",rngAll,DataTable("{Value}") 如果 Reporter.CurrentActionIterationStatus = 1 则 ExitAction

另请参阅 https://admhelp.microfocus.com/uft/en/23.4/UFT_Help/Subsystems/OMRHelp/Content/OV_Supp_Util/Utility_Reporter.htm

© www.soinside.com 2019 - 2024. All rights reserved.