自动驾驶仿真:ECU TEST自动化测试常用API调用

news2025/7/27 12:39:44

文章目录

  • 一、 API调用运行环境
  • 二、ET API帮助文档
  • 三、如何导入ET API
  • 四、 ET常用接口
      • 1、 创建用于添加测试步骤的Package
      • 2、 在Package的TestStep中添加precondition块
      • 3、 在Package的TestStep中添加Block块
      • 4、在Package的TestStep中添加PostconditionBlock块
      • 5、 在Package的TestStep中调用其他package
      • 6、 创建联合仿真工具的JOB
      • 7、 创建Calculation计算模块
      • 8、 创建信号的GlobalMapping
      • 9、 创建SignalRecording模块
      • 10、 创建Wait时间延迟模块
      • 11、 VERISTAND信号读
      • 12、 VERISTAND信号写
      • 13、 ECU TEST TestStep函数


提示:以下是本篇文章正文内容,下面案例可供参考

一、 API调用运行环境

1、 安装python 3.6 及以上

二、ET API帮助文档

1、进入ET HELP文档
在这里插入图片描述

2、进入API HELP
在这里插入图片描述

3、根据需求选择API类型

在这里插入图片描述
在这里插入图片描述


三、如何导入ET API

1、 获取ET API路径
注意:调用ET的API之前需要将API路径添加至搜索路径中,这样才能成功调用API:

方法1:通过注册表获取API路径

reg = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r'SOFTWARE\TraceTronic\ECU-TEST 2022.1') #打开注册表;
etDir = winreg.QueryValueEx(reg, 'Path')[0] #查询ET Path的值;
reg.Close() #关闭注册表;
ApiClientPath = os.path.join(etDir, r'Templates\ApiClient') #路径连接;

#注:根据版本更改ECU-TEST 2022.1值

方法2:在安装目录下找到API文件夹(根据安装位置)

ApiClientPath = os.path.join(r'C:\Program Files\ECU-TEST 2022.1\Templates\ApiClient')

2、将ApiClient路径添加至python搜索路径

sys.path.append(ApiClientPath)

3、导入ApiClient库

from ApiClient import ApiClient

4、API实例化

self.api = ApiClient()

四、 ET常用接口

1、 创建用于添加测试步骤的Package

在这里插入图片描述

1)pkghandle = self.api.PackageApi.CreatePackage()

2、 在Package的TestStep中添加precondition块

在这里插入图片描述

在这里插入图片描述

注意:要先创建pkg才能添加precondition,pkghandle是创建pkg返回的句柄;

1)	precondition = self.api.PackageApi.TestStepApi.CreateTsPreconditionBlock() #创建PreconditionBlock;

2)pkghandle.AppendTestStep(precondition) #将block添加到pkg的TestStep中;

3、 在Package的TestStep中添加Block块

在这里插入图片描述
在这里插入图片描述

注意:要先创建pkg才能添加Block,pkghandle是创建pkg返回的句柄;

3) actionBlock = self.api.PackageApi.TestStepApi.CreateTsBlock() #创建Block块

4) actionBlock.SetActionColumnText('Action') #设置block的名称;

5) pkghandle.AppendTestStep(actionBlock) #将block添加到pkg的TestStep中;

4、在Package的TestStep中添加PostconditionBlock块

在这里插入图片描述
在这里插入图片描述
注意:要先创建pkg才能添加Postcondition,pkghandle是创建pkg返回的句柄;

1)	postcondition = self.api.PackageApi.TestStepApi.CreateTsPostconditionBlock() #创建PostconditionBlock;

2) pkghandle.AppendTestStep(postcondition)  #将block添加到pkg的TestStep中;

5、 在Package的TestStep中调用其他package

在这里插入图片描述

1)Tspkg = self.api.PackageApi.TestStepApi.CreateTsPackage(pkgPath) #创建引用包的调用句柄;

在这里插入图片描述

2)Tspkg.SetPackageParameter(paramName,paramValue) #设置被调用package的形参值;

3)block.AppendTestStep(Tspkg) #将Job添加到Block/PostconditionBlock/PreconditionBlock模块;

6、 创建联合仿真工具的JOB

在这里插入图片描述

1)	mappingitem = self.api.PackageApi.MappingApi.CreateJobMappingItem(toolID, JobName, portId=None, checkTarget=True)  #创建工具模型的mappingitem,需要填写ToolID、JobName;

toolID:

在这里插入图片描述
JobName:
在这里插入图片描述
注意:创建Job之前,需要确保工具的Job MappIngItem已经创建,如上所示;

在这里插入图片描述

2)	TsJob = self.api.PackageApi.TestStepApi.CreateTsJob(mappingitem,generateInterface=True) #创建TsJob之前mappingitem需要提前创建;

在这里插入图片描述

3)	TsJob.SetParameter(name, Value) #设置Job的参数名称与值;

4) block.AppendTestStep(Tsjob) #将Job添加到Block/PostconditionBlock/PreconditionBlock模块

7、 创建Calculation计算模块

1)	TsCal = self.api.PackageApi.TestStepApi.CreateTsCalculation() #创建Calculation模块;

在这里插入图片描述

2)	TsCal.SetFormula(Formula) #设置Calculation模块的公式

在这里插入图片描述

3)	TsCal.SetExpectationExpression(ExpectationExpression) #添加期望结果表达式;

4) block.AppendTestStep(TsCal) #将Job添加到Block/PostconditionBlock/PreconditionBlock模块;

8、 创建信号的GlobalMapping

1)mappingfile = self.api.GlobalMappingApi.CreateMapping() #创建GlobalMapping文件;

在这里插入图片描述

2)	mappingItem = self.api.PackageApi.MappingApi.CreateModelMappingItem(systemIdentifier,
targetPath,variableType=None,isSignal=False,referenceName=MappingName,checkTarget=True) 
#需要配置systemIdentifier一般为Plant model(TCF中可以修改名称),targetPath是需要Mapping的信号路径,referenceName是Mapping的名称;

3)	mappingfile.AddItem(mappingItem)  #添加GlobalMapping对象到Mappingfile;

在这里插入图片描述

4)mappingfile.Save(filename=””) #保存Mapping文件;

9、 创建SignalRecording模块

在这里插入图片描述

1) SGroupHandle =self.api.PackageApi.SignalRecordingApi.CreateSignalGroup(name='',description='') #创建信号录制组别;

2) pkghandle.AppendSignalGroup(SGroupHandle, defaultRecordingGroup=None, allowNewName=False) #将信号组添加到pkg;

3) RecordingGroup = SGroupHandle.GetRecordingGroups() #获取所有信号组,返回的RecordingGroup是列表;

在这里插入图片描述

4for RG in RecordingGroup:  #因为RecordingGroup是列表,返回了多个录制组;
    RG.SetRecordingMode(RG.RECORDING_MODE_AUTO) #将每个组切换自动录制模式

在这里插入图片描述

5)SGroupHandle.AppendMappingItem(MappingItem) #需要先创建GlobalMapping,才能将信号添加至信号录制组;

10、 创建Wait时间延迟模块

1)	TsWait= self.api.PackageApi.TestStepApi.CreateTsWait() #创建时间延时模块;

2)	TsWait.SetDelay(value, unit)  #创建延迟时间

3)  block.AppendTestStep(TsWait)  #将TsWait添加到Block/PostconditionBlock/PreconditionBlock模块

11、 VERISTAND信号读

注意这里使用的Mapping和GlobalMapping不一样

1)	mappingItem = self.api.PackageApi.MappingApi.CreateGenericMappingItem(referenceName=referenceName) #创建需要读取值的信号Mappingitem;

2) TsRead = self.api.PackageApi.TestStepApi.CreateTsRead(mappingItem) #添加MappingItem到读取步骤;

3) TsRead.SetExpectationExpression(expectation) #添加期望结果;

4)  block.AppendTestStep(TsRead)  #将TsRead添加到Block/PostconditionBlock/PreconditionBlock模块

12、 VERISTAND信号写

1)	MappingItem = self.api.PackageApi.MappingApi.CreateGenericMappingItem(referenceName=referenceName)
#创建需要写入值的信号GenericMappingitem;

2)	testStep = self.api.PackageApi.TestStepApi.CreateTsWrite(MappingItem) #添加MappingItem到写入步骤;

3)	testStep.SetValue(value) #设置写入值;

13、 ECU TEST TestStep函数

创建IF语句

1)Tsif = self.api.PackageApi.TestStepApi.CreateTsIfThenElse()  # 创建if..else函数

2)block.AppendTestStep(Tsif) # 添加if函数到block块

3)Tsif.SetCondition(condition)  # 添加if..else条件

4)ThenNode = Tsif.GetThenNode()  # 获取Then节点

5)ElseNode = Tsif.GetElseNode()  # 获取Else节点

6)ThenNode.AppendTestStep()/ElseNode.AppendTestStep() #添加TestStep到Then或Else节点;

创建LOOP语句

1)Tsloop = self.api.PackageApi.TestStepApi.CreateTsLoop()  #创建Loop函数

2)block.AppendTestStep(Tsloop)  # 添加Loop函数到block块

3)Tsloop.SetStartCondition(loopcondition)  # 设置Loop执行条件

4)Tsloop.SetLoopCountExpression(looptimes)  # 设置Loop执行次数

5)Tsloop.SetSaveInVariableName(LoopCounter) # 设置Save counter in的变量

创建SWITCH CASE语句

1)Tsswitch_case = self.api.PackageApi.TestStepApi.CreateTsSwitchCase() #创建SwitchCase函数;

2)block.AppendTestStep(Tsswitch_case) #添加SwitchCase到block块;

3)Tsswitch_case.SetSwitchValue(switchcondition) #添加SwitchCase的进入条件;

在这里插入图片描述

4)SwitchNode = Tsswitch_case.CreateCaseNode(caseValue='0', insPos=None) #创建Case节点;

5)SwitchNode.AppendTestStep() #Case节点添加步骤;

在这里插入图片描述

6)GetDefaultNode = Tsswitch_case.GetCaseNode() #获取Default节点

7)GetDefaultNode.AppendTestStep() #Default节点添加步骤;

以上,例举了一些自动化常用的API;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/368229.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA 8 新特性 Lamdba表达式

Java8 新特性: 1、Lamdba表达式 2、函数式接口 3、方法引用和构造引用 4、Stream API 5、接口中的默认方法和静态方法 6、新时间日期API 7、Optional 8、其他特性 Java8 优势:速度快、代码更少(增加了新的语法 Lambda 表达式)、强…

Centos安装Python、PyCharm

安装Python 1、打开终端(Terminal) 2、输入以下命令更新系统: sudo yum update 3、安装Python: sudo yum install python3 4、安装完成后,可以使用以下命令检查Python版本: python3 --version 安装PyCharm 1、下载PyCharm的安…

SQL server设置用户只能访问特定数据库、访问特定表或视图

在实际业务场景我们可能需要开放单独用户给第三方使用,并且不想让第三方看到与业务不相关的表或视图,我们需要在数据库中设置一切权限来实现此功能: 1.设置用户只能查看数据库中特定的视图或表 1.创建用户名 选择默认数据库 服务器角色默认…

什么是项目管理?项目经理应该如何进行管理?

项目管理: 一是指一种管理活动,一种有意识地按照项目的特点和规律,对项目进行组织管理的活动; 二是指一种管理学科,以项目管理活动为研究对象的一门学科,它是探求项目活动科学组织管理的理论与方法。 就…

90%的程序员还不知道ChatGPT能这么用

本内容来自公众号“布博士”------(擎创科技资深产品专家)当下,越来越多的企业已经开始应用机器学习和自然语言处理等技术来辅助告警故障分析。在这个领域中,CHATGPT这样的人工智能模型可以扮演非常重要的角色,通过对历…

压榨配置写出颠覆认知的Java线程池

Java线程池参数调优前言线程池常见误解■ 必须用线程池 不能直接new线程■ 7参数的生效顺序结论Java线程池参数调优■ 网上流传的线程数计算公式■ 调整生产消费平衡疑问① 能否直接设置大量线程数疑问② 这个核心数最好吗■ 经典案例-业务请求第三方接口■ 反思过去配置的线程…

CSS 基础【快速掌握知识点】

目录 一、什么是CSS 二、CSS发展史 三、CSS基本语法结构 1、语法 2、例如 四、style标签 五、HTML中引入CSS样式 1、行内样式 2、内部样式表 3、外部样式表 六、CSS基本选择器 1、标签选择器 2、类选择器 3、ID选择器 4、总结 5、基本选择器的优先级 七、CSS的…

通过自适应 MFA 提高 IT 安全性

什么是多重身份验证 (MFA) 多重身份验证 (MFA)为登录流程增加了一层保护。访问帐户或应用时,用户需要提供额外的身份验证,例如扫描指纹或输入手机收到的代码。 为什么自适应的身份验证重要 鉴于当今不断变化的 IT 威胁形势,多重身份验证 &…

此 Google 帐号尚未与设备关联。要安装应用,请先访问设备上的 Play 商店应用。 了解详情(已解决)

当你在谷歌Play商店想要下载一些手机应用时,经常会有跳提示: 此 Google 帐号尚未与设备关联。要安装应用,请先访问设备上的 Play 商店应用。 了解详情 此时需要打开你的Chrome浏览器,打开设置-扩展程序-打开Chrome应用商店 或直接…

SpringBoot中使用spring-retry解决重试

使用场景 在日常开发过程中,难免会与第三方接口发生交互,例如:短信发送、远程服务调用、争抢锁等场景,当正常调用发生异常时,例如:网络抖动,这些间歇性的异常在一段时候之后会自行恢复&#xf…

【华为OD机试模拟题】用 C++ 实现 - 开心消消乐(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

支付系统中的设计模式09:组合模式

现在就剩下怎么能够实现运营部提出的「打印出平台顾客购买的商品小票」这个需求了。 我们去超市买完东西之后,都会收到收银员打印出来的小票,就是商品清单、价格、数量和汇总的信息。下面这个我想应该99%的人都见过吧。 图三十七:超市购物小票 线上也是一样,也会有这种购物…

【软件测试】测试人不躺平,进军高级自动化测试自救,你的不一样结局......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 随着测试从业年龄的…

2023面试必备:web自动化测试POM设计模式详解

1.背景 为UI页面写自动化测试用例时(如:web自动化、app自动化),使用普通的线性代码,测试用例中会存在大量的元素定位及操作细节,当UI界面变化时,测试用例也要跟着变化,在自动化测试…

初学C/C++内存管理--new和delete的使用

一,内存分布 栈区: 一般的局部变量和函数的返回数据以及返回地址,函数的参数都在战栈区上开辟空间。栈区开空间一般由编译器自动管理,出了生命周期自动释放。也可以通过一些方式自己手动开辟栈区空间,不过一般用不到…

代码随想录【Day23】| 669. 修剪二叉搜索树、108. 将有序数组转换为二叉搜索树、538. 把二叉搜索树转换为累加树

669. 修剪二叉搜索树 题目链接 题目描述: 给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新…

【python学习笔记】:如何去除字符串中空格

在输入数据时,很有可能会无意中输入多余的空格,或者在一些场景中,字符串前后不允许出现空格和特殊字符,此时就需要去除字符串中的空格和特殊字符。 【注意:这里的特殊字符,指的是制表符(\t&…

2023/2/24 图数据库Neo4j的理解与应用

1 什么是图数据库(graph database) 十大应用案例:https://go.neo4j.com/rs/710-RRC-335/images/Neo4j-Top-Use-Cases-ZH.pdf “大数据”每年都在增长,但如今的企业领导者不仅需要管理更大规模的数据,还迫切需要从现有…

13、Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

简介 主页:https://github. com/microsoft/Swin-Transformer. Swin Transformer 是 2021 ICCV最佳论文,屠榜了各大CV任务,性能优于DeiT、ViT和EfficientNet等主干网络,已经替代经典的CNN架构,成为了计算机视觉领域通用…

第十三届蓝桥杯省赛 C++ C 组 I 题、Python B 组 H题——技能升级(AC)

目录1.技能升级1.题目描述2.输入格式3.输出格式4.样例输入5.样例输出6.数据范围7.原题链接2.解题思路3Ac_code1.技能升级 1.题目描述 小蓝最近正在玩一款 RPG 游戏。 他的角色一共有 NNN 个可以加攻击力的技能。 其中第 iii个技能首次升级可以提升 AiA_iAi​点攻击力&#x…