当前位置: 首页 > news >正文

TestStand API编程:在SequenceFile中操作Sequence和Step

TestStand API编程:在SequenceFile中操作Sequence和Step

一、Sequence 介绍

在TestStand测试框架中,Sequence(序列)是构成测试流程的核心单元。一个Sequence包含一系列按顺序执行的Step(步骤),用于定义具体的测试逻辑。每个Sequence有唯一的名称和索引,可通过TestStand API进行动态创建、修改和执行。Sequence支持参数传递、流程控制(如分支、循环)以及与外部模块(如C#、Python代码)的交互,是实现自动化测试逻辑的基础。

二、Step 介绍

Step(步骤)是Sequence的最小执行单元,用于定义具体的操作(如仪器控制、数据采集、逻辑判断等)。每个Step包含以下关键属性:

  • Step Type:指定步骤的类型(如ActionSequenceCallLoop等)。
  • Module Name:执行步骤时调用的模块名称(如C#程序集名称)。
  • Entry Point:模块中具体的方法或函数名。
  • Parameters:步骤执行时所需的输入/输出参数。
    通过TestStand API,可以动态创建Step、设置属性,并将其添加到Sequence中,实现灵活的测试流程编排。

三、获取SequenceFile中的Sequence

核心思路

通过SequenceFile对象的方法获取序列列表,支持按索引或名称检索。

代码示例

using NationalInstruments.TestStand.Interop.API;var engine = new Engine();// 加载序列文件
var sequenceFile = engine.GetSequenceFileEx("YourSequenceFile.seq");// 方法1:通过索引获取序列(索引从0开始)
var sequenceIndex = 0;
var sequence = sequenceFile.GetSequence(sequenceIndex);// 方法2:通过名称获取序列
var sequenceName = "MyTestSequence";
var namedSequence = sequenceFile.GetSequenceByName(sequenceName);// 输出序列名称
Console.WriteLine($"Sequence Name: {sequence.GetName()}");

四、向SequenceFile中添加Sequence

核心思路

使用InsertSequenceEx方法插入新序列,需指定序列类型和名称。

C#代码示例

using NationalInstruments.TestStand.Interop.API;var engine = new Engine();// 加载序列文件
var sequenceFile = engine.GetSequenceFileEx("YourSequenceFile.seq");// 插入新序列
var sequenceIndex = 0;
var sequence = engine.NewSequence();
// 设置序列属性,如Name:
sequence.Name = "YourSequenceName";
sequenceFile.InsertSequenceEx(sequenceIndex,  // 序列索引sequence // 序列
);

五、获取SequenceFile中的Step

核心思路

先获取目标Sequence,再通过Sequence对象的Steps集合访问步骤。

C#代码示例

using NationalInstruments.TestStand.Interop.API;
var engine = new Engine();
var sequenceFile = engine.GetSequenceFileEx("YourSequenceFile.seq");// 获取序列,以MainSequence为例
var targetSequence = sequenceFile.GetSequenceByName("MainSequence");// 方法1:通过步骤索引获取Step
var stepIndex = 0;
var firstStep = targetSequence.GetStep(stepIndex, StepGroups.StepGroup_Main);// 方法2:通过步骤名称获取Step
var stepName = "InitializeInstrument";
var namedStep = targetSequence.GetStepByName(stepName, StepGroups.StepGroup_Main);// 获取Step列表
var steps = Enumerable.Range(0, targetSequence.GetNumSteps(StepGroups.StepGroup_Main)).Select(i => targetSequence.GetStep(i, StepGroups.StepGroup_Main)).ToList()

六、向SequenceFile中添加Step

核心思路

通过Sequence对象的Steps.Add方法动态添加步骤,需指定步骤类型和模块信息。

C#代码示例

using NationalInstruments.TestStand.Interop.API;
var engine = new Engine();
var sequenceFile = engine.GetSequenceFileEx("YourSequenceFile.seq");// 获取序列,以MainSequence为例
var targetSequence = sequenceFile.GetSequenceByName("MainSequence");// 创建新步骤,Action为StepType
var step = engine.NewStep("","Action");
step.Name = "NewStep";// 插入Step
var stepIndex = 0;
targetSequence.InsertStep(step, stepIndex, StepGroups.StepGroup_Main);

下面是StepType列表,具体含义请参考steptypes:

StepType_Action –(Value: "Action")
StepType_Break –(Value: "NI_Flow_Break")
StepType_CallExecutable –(Value: "CallExecutable")
StepType_Case –(Value: "NI_Flow_Case")
StepType_Continue –(Value: "NI_Flow_Continue")
StepType_DoWhile –(Value: "NI_Flow_DoWhile")
StepType_Else –(Value: "NI_Flow_Else")
StepType_ElseIf –(Value: "NI_Flow_ElseIf")
StepType_End –(Value: "NI_Flow_End")
StepType_For –(Value: "NI_Flow_For")
StepType_ForEach –(Value: "NI_Flow_ForEach")
StepType_Goto –(Value: "Goto")
StepType_If –(Value: "NI_Flow_If")
StepType_Label –(Value: "Label")
StepType_LimitLoader –(Value: "LimitLoaderStep ")
StepType_MessagePopup –(Value: "MessagePopup")
StepType_MultiNumericMeasurement –(Value: "NI_MultipleNumericLimitTest")
StepType_NumericMeasurement –(Value: "NumericLimitTest")
StepType_PassFailTest –(Value: "PassFailTest")
StepType_PropertyLoader –(Value: "NI_VariableAndPropertyLoader")
StepType_PropertyLoaderEx –(Value: "NI_PropertyLoader")
StepType_Select –(Value: "NI_Flow_Select")
StepType_SequenceCall –(Value: "SequenceCall")
StepType_Statement –(Value: "Statement")
StepType_StreamLoop –(Value: "NI_Flow_StreamLoop")
StepType_StringMeasurement –(Value: "StringValueTest")
StepType_SweepLoop –(Value: "NI_Flow_SweepLoop")
StepType_Wait –(Value: "NI_Wait")
StepType_While –(Value: "NI_Flow_While")

七、设置Step的RunMode

在 TestStand 进行脚本编辑时,经常需要对 Step 的 RunMode 进行设置,以下是使用 Api 设置 RunMode 的具体过程:

using NationalInstruments.TestStand.Interop.API;
var engine = new Engine();
var step = engine.NewStep("", stepType);// 设置为Skip,该Step不执行
step.SetRunModeEx("Skip");
// 设置为Normal,该Step执行
step.SetRunModeEx("Normal");

八、添加Sequence并使用Step调用

完整流程示例

using NationalInstruments.TestStand.Interop.API;
var engine = new Engine();
var sequenceFile = engine.GetSequenceFileEx("YourSequenceFile.seq");// 插入Sequence
var index = sequenceFile.NumSequences;
sequenceFile.InsertSequenceEx(index, sequence);// 获取MainSequence
var mainSequence = sequenceFile.GetSequenceByName("MainSequence");
var stepIndex = mainSequence.GetNumSteps(StepGroups.StepGroup_Main);// 创建Step
var stepType = "SequenceCall";
var step = engine.NewStep("", stepType);
step.Name = sequence.Name;// 设置Step属性
var property = step.Module.AsPropertyObject();
property.SetValBoolean("UseCurFile", 0, true);
property.SetValString("SeqName", 0, sequence.Name);// 插入Step
mainSequence.InsertStep(step, stepIndex, StepGroups.StepGroup_Main);

九、总结

通过TestStand API操作SequenceFile中的SequenceStep,可以实现以下能力:

  • 动态生成测试流程,无需手动编辑序列文件。
  • 批量管理序列和步骤,提升自动化测试脚本的灵活性。
  • 结合C#等编程语言,实现复杂的测试逻辑与外部系统集成。

注意事项

  • 操作前需确保TestStand引擎已正确初始化,并获取Engine对象引用。
  • 步骤的模块路径和入口点需与实际部署的程序集一致,避免运行时错误。
  • 建议在代码中添加异常处理,捕获COMException等可能的运行时异常。

通过以上实践,可充分发挥TestStand API的可编程能力,构建高效、可扩展的自动化测试解决方案。

相关文章:

  • Vue 3 的 <script setup> 语法糖(持续更新)
  • 零基础设计模式——结构型模式 - 享元模式
  • Conda更换镜像源教程:加速Python包下载
  • 双因子COX 交互 共线性 -spss
  • Windows SMB压缩在低速或者高延迟环境可以帮助提供性能增益
  • UDP数据报
  • 设计模式24——访问者模式
  • Flutter 与 Android 原生布局组件对照表(完整版)
  • HTTP协议接口三种测试方法之-JMeter(保姆教程)
  • GO——内存逃逸分析
  • goofys挂载minio为本地目录
  • IAR创建STM8裸机工程创建---STM8开发【二】
  • 金融全业务场景的系统分层与微服务域架构切分
  • 科技赋能音乐,指北科技新品闪耀广州国际乐器展
  • 智慧场馆:科技赋能的艺术盛宴
  • 青岛市长任刚与深兰科技董事长陈海波会谈,深兰青岛项目即将进入快车道!
  • leetcode hot100刷题日记——24.回文链表
  • Problem H. saki 酱 saki 酱 saki 酱 saki 酱(树的直径)
  • 影刀RPA-17- 列表练习
  • OpenCV CUDA模块直方图计算------在 GPU上执行直方图均衡化(Histogram Equalization)函数equalizeHist
  • 网站规划书的内容有哪些/知乎关键词排名
  • 太仓建设网站/网站百度关键词优化
  • 精美网站建设/seo网站优化工具大全
  • 哪个做企业网站/免费做网站自助建站
  • 临沂公司做网站/建网站流程
  • 漳州 外贸网站建设 SEO/百度关键词广告怎么收费