如何根据测试结果更改TestStand的执行次序?

更新 Mar 31, 2023

环境

软件

  • TestStand

  • 我希望能够根据条件(例如,是否在序列运行时发生任何特定错误)从我的序列中跳至特定步骤。
  • 是否能跳至TestStand序列内的特定步骤,即使该步骤处于已经执行的步骤组中吗?
  • 如果某个测试或一组测试通过或失败,那我只想执行一个步骤。
  • 我想基于副序列(SubSequence)的结果,结束主序列(MainSequence),如何设置?

TestStand中有许多工具,可让您根据结果,变量值或其他条件以编程方式控制步骤的流程。下面列出了用于控制流程的基本工具:

动作后(Post-Actions)
您可以使用任何步骤中的“动作后”和/或“转到(Goto)”步骤类型,跳到序列中的另一个步骤。
  • 选择一个步骤并导航到“步骤设置”(Step Settings),然后选择“发布操作”(Post Actions)
  • 转到步骤中,只需从标记为Destination Step的下拉列表中选择所需的步骤即可。
  • 在正常步骤的“发布操作”中,您可以选中“使用自定义条件”(Use Custom Condition)框,然后从“按条件为真”(On Condition True)“按条件为假”(On Condition False)部分的下拉菜单中选择“转到步骤” (Goto Step) 。您可以根据步骤结果选择不同的步骤(默认条件是通过失败)。然后,您可以从所选部分的第二个下拉菜单中选择目标步骤。

例如,您可以检查任何步骤的Step.Result.Error.Code属性的值。如果在运行序列时发生特定的错误,则可以跳至特定的步骤。这也能适用于Step.Result.Error.Occurred属性。

通常,此过程仅允许您转到当前或下一步骤组中的任何步骤,而不能转到上一个步骤组。但是,您可以使用RunState.NextStepIndex和RunState.StepGroup属性来跳至上一个步骤组。 RunState.NextStepIndex包含以0为索引开头的所需步骤。这些所需步骤会执行由RunState.StepGroup指示的步骤组。通过修改这些属性的值,您可以指定TestStand接下来执行的步骤。例如,如果您位于“主要”(Main)步骤组中,并且想要使TestStand跳至“清理”(Cleanup) 序列中的第一步,则可以在“语句”(Statement)步骤中使用以下代码:

RunState.NextStepIndex = 0, RunState.StepGroup = "Setup"

RunState.StepGroup属性的有效值为: SetupMainCleanup


前提条件(Preconditions)
您可以使用前提条件以设置仅在满足某些条件(例如,测试必须通过,运行失败或执行)时才允许运行步骤。

  • 选择一个步骤并导航到“步骤设置”(Step Settings) ,然后选择“后操作”(Post Actions)
  • 在这里,您可以选择仅在已知变量等于指定值的情况下运行。
  • 或者,您可以使用前提条件生成器。 (如下图所示)
    • 这使您可以更轻松地定义条件并根据指定步骤的结果/状态插入新代码。



流程控制步骤(Flow Controls Steps)
这些步骤可从“插入选项板”(Insertion Palatte)中的“流程控制”(Flow Control)内的“步骤类型”(Step Types)文件夹的中获得(如下图所示)。
这些步骤使用户可以添加触发条件并启用编码功能,例如If,Else,Else If,While和For。

类似于前提条件,条件构建器(Condition Builder)可用于协助构建用于控制流程的代码。

附加信息

Post Action(后操作)方法可以与SequenceFilePostStepRuntimeError Engine Callback结合使用,以实现更灵活的设置。请参阅处理TestStand运行时错误重写TestStand中的SequenceFilePostStepRuntimeError Callback范例,以获取有关SequenceFilePostStepRuntimeError Engine Callback的更多信息。

该解决方案不适用于TestStand 2.0之前的版本。