我用1个动作创建了一个测试,其中包含n个动作。在执行n个动作的每个动作之后,是否有任何方法可以检查结果是否失败或通过并继续进行?

最佳答案

不直接。

类似的想法是询问当前运行结果的状态,请参见How can I get the run result status according to the current report node?,但这目前尚未解决。

但是,您可以调用操作并在其中使用返回值,如下所示:

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在脚本中不可见地保存了metainfo,并且如果您保存了无效的操作调用,则该metainfo将被丢弃。 (您可以看到何时发生这种情况,因为操作调用将从测试流程视图中消失。)

并且:如果您不将RunAction结果存储在变量中,而是直接使用它,例如

If not RunAction ("myTest [Action2]", oneIteration) then
    ' The Action2 call signalled "failure" (false)
End If


也会出现同样的混乱:QTP无法理解这是一个有效的操作调用,即使将其编辑回原始格式也无法使用。

除了“提防”提示外,LoadAndRunAction也是如此,后者在运行时调用动作。可以将LoadAndRunAction称为函数,如果被调用的操作通过ExitActionIteration返回一个值,则它将返回该值。

还有一个“提防”提示:ExitActionIteration确实要求将其参数括在方括号中,即使它是Sub(或至少称为Sub)也是如此。我怀疑这是因为它不是真正的SubFunction,而是一种特殊的语句,以某种特殊的方式“修补”了MS VBScript引擎。

08-24 21:28