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

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

文章目录

  • 一、 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.lryc.cn/news/18821.html

相关文章:

  • notepad++中使用正则表达式
  • 什么蓝牙耳机打游戏好?打游戏好用的无线蓝牙耳机
  • 基于appium的app自动化测试框架
  • 【拿好了!Linux 运维必备的 13 款实用工具!】
  • 软考中级--嵌入式系统设计师考试培训教程开始了
  • JDBC学习(复习)-面试总结详细
  • 前端:你不知道的async await
  • c#前端实现对pcl点云颜色根据强度特征动态变化突出指定对象
  • 如何制定达人营销策略
  • 100种思维模型之三层解释思维模型-020
  • RK系列(RK3568) i2s 音频输入 麦克风驱动
  • Python|Pymol的安装
  • Mysql中关于查询日志的配置详解
  • 外包整整干了一年,废了。。。
  • 内网渗透(五十六)之域控安全和跨域攻击-非约束委派攻击
  • 初阶C语言——指针【详解】
  • MySQL tinyint(1) 、int(32) 与 varchar(255) 长度含义不同
  • 搜索旋转排序数组、路径总和 II、拆分数字
  • QT自绘标题和边框
  • 数据库浅谈之 LLVM
  • Unable to connect to Redis无法连接到Redis
  • Feign、Ribbon、Hystrix
  • SpringCloud - Nacos注册发现
  • Socket编程、协议理解
  • Idea集成码云
  • 并发编程学习篇ReentrantLock设计思想剖析
  • 区分效度全流程分析
  • 【华为OD机试模拟题】用 C++ 实现 - 找数字(2023.Q1)
  • 从0开始写Vue项目-Vue实现用户数据批量上传和数据导出
  • 企业容器云管理平台选型指南