如何程序判断在测试步骤出错时中止一个执行序列
主要软件:
主要软件版本: 1.0.3
主要软件修正版本: N/A
次要软件: N/A
问题: 在TestStand中,常常需要程序判断在某个测试步骤失败的时候中止执行序列。特别是在该测试是必测项或是关系到生产线的运行安全时尤其必要。那么如何能在步骤失败的时候程序判断中止执行呢?
解答: 有两种办法可以解决该问题,如果你使用TestStand 2.0.或更新版本TestStand,两种办法都可以,如果使用TestStand 1.0.3或者更老的版本,那么就只有第一种办法可行了。下面是这两种解法的详细步骤。因为这两中解法都使用回调,所以他们可以被单独用在client sequence里或用在process model里面来影响所有使用该model的sequence。
使用PostStep回调(TestStand 1.0.x):
- 打开需要被中止的测试sequence文件然后到菜单项Edit»Sequence File Callbacks.
- 在列表中选择“SequenceFilePostStep”回调然后点击“Add(添加)”按钮将该回调包含到文件中去。点击OK返回sequence文件。
注意: SequenceFilePostStep回调序列将在TestStand运行完所有的Client序列步骤之后被调用,如果要将该回调放到一个process model里面,使用“ProcessModelPostStep”替换掉“SequenceFilePostStep”会有更好的效果,关于该回调和另外回调请参考下面的相关链接。
- 在"View"下拉菜单中选中打开回调序列,并在step adapter控件中选中"ActiveX Automation Adapter"。
- 在回调序列里面增加一个Action step,在新step上点击右键并在弹出菜单中选中“properties(属性)”选项。
- 在step properties窗口中选择"Preconditions"选项,在preconditions对话框中选择"Insert New Expression"。
- 在"Edit/View Expression"中加入描述StrCompRunState.Caller.PreviousStep.Result.Status, "Failed")==0”,可以直接键入或者或者用浏览按钮来查找函数和属性。这样会强制该step只会在上个被执行的测试步骤失败时被执行。点击OK回到step属性窗口然后选择“Specify Module”来打开Edit Automation Call对话框。
- 配置"ActiveX Reference"项为RunState.Execution,可以直接键入或者或者用浏览按钮来查找。
- 点击"Automation Server"控件,选择TestStand API。
- 点击"Object Class",选择Execution
- 取消勾选"Create Object"选框。
- 在"Call Method or Access Property"标题下,点击"Action" 控件选择"Call Method",然后点击"Method"控件选择方法为"Abort.",点击OK按钮保存step设置。现在SequenceFilePostStep被调用时只要有错误发生,该sequence将会被中止。
使用PostStepFailure回调(TestStand 2.0 或更高版本):
- 打开需要被中止的测试sequence文件然后到菜单项 Edit»Sequence File Callbacks.
- 在列表中选择"SequenceFilePostStepFailure"回调然后点击“Add(添加)”按钮将该回调包含到文件中去。点击OK返回sequence文件。注意:SequenceFilePostStepFailure回调序列将在测试序列中某个步骤失败的时候被TestStand调用,如果要将该回调放到一个process model里面,使用"ProcessModelPostStepFailure"替换掉"SequenceFilePostStepFailure"会有更好的效果,关于该回调和另外回调方式请参考下面的相关链接。
- 在"View"下拉菜单中选中打开回调序列,并在step adapter菜单中选中"ActiveX Automation Adapter"。
- 在回调序列里面增加一个Action,右键点击该step选择"Properties"。在新窗口中选择"Specify Module"以编辑该step。
- 配置"ActiveX Reference"项为RunState.Execution,可以直接键入描述或者或者用浏览按钮来找到该属性。
- 点击"Automation Server"控件,选择TestStand API。
- 点击"Object Class",选择Execution
- 取消勾选"Create Object"选框。
- 在"Call Method or Access Property"标题下,点击"Action" 控件选择"Call Method",然后点击"Method"控件选择方法为"Abort.",点击OK按钮保存step设置。这样在SequenceFilePostStepFailure被调用时,该sequence将会被中止。
注意:对于上述两种解法,一种简单的改进办法是根据用户的输入来决定是否中止。比如,考虑下在ActiveX调用之前弹出一个消息框让用户选择是否接受错误或者中止序列执行。用户选择的结果可以被作为该步骤的附加先决条件。另外一个改进办法是可以选择除了“Abort(中止)”之外的其他操作。请查阅用户手册关于"Abort," "Terminate" 和"Break"之间的不同点来决定哪一种操作更适合您的执行序列。
相关链接: About the TestStand Process Models
Product Manuals: TestStand User Manual (March 2001)
KnowledgeBase 2LT9BI6E: What is the Difference Between Using a "SequenceFile..." callback and a "ProcessModel..." callback?
附件:
报告日期: 05/29/2002
最近更新: 02/23/2010
文档编号: 2LS8LAY6
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.