当前位置: 首页 > 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;

相关文章:

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

文章目录一、 API调用运行环境二、ET API帮助文档三、如何导入ET API四、 ET常用接口1、 创建用于添加测试步骤的Package2、 在Package的TestStep中添加precondition块3、 在Package的TestStep中添加Block块4、在Package的TestStep中添加PostconditionBlock块5、 在Package的Te…...

notepad++中使用正则表达式

目录 notepad中使用正则表达式 notepad中正则表达式的语法notepad中常用的正则表达式类notepad中查找窗口的关于正则表达式的参数说明notepad正则表达式不能选择匹配内容notepad正则表达式使用举例 正则表达式提取分隔符前的内容正则表达式替换一个分隔符为换行符删除多余的空…...

什么蓝牙耳机打游戏好?打游戏好用的无线蓝牙耳机

午休或是周末约上好友玩两局游戏,是忙里偷闲的快乐时刻,对于普通游戏玩家,其实耳机够用就行,下面就分享几款打游戏好用的蓝牙耳机。 一、南卡小音舱蓝牙耳机 蓝牙版本:5.3 推荐系数:五颗星 南卡小音舱li…...

基于appium的app自动化测试框架

App自动化测试主要难点在于环境的搭建,appium完全是基于selenium进行的扩展,所以app测试框架也是基于web测试框架开发的 一、设备连接 (即构建基础的测试环境,保证可以驱动设备进行操作) 0.准备测试环境 1&#xff0…...

【拿好了!Linux 运维必备的 13 款实用工具!】

​本文介绍几款 Linux 运维比较实用的工具,希望对 Linux 运维人员有所帮助。 查看进程占用带宽情况 – Nethogs Nethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽。 下载: http://sourceforge.net/projects/nethogs/files/ne…...

软考中级--嵌入式系统设计师考试培训教程开始了

1.考试时间: 1.1 上半年5月下旬考试 1.2 下半年11月上旬考试 2.考试内容 2.1 系统基础 满分75分 时间150分钟 2.2 系统设计 满分75分 时间150分钟 3.计划安排 3.1 熟悉考试大纲 3.2 按考纲学习相关内容 整理设计知识 快速学习形成知识印象 3.3 复习整理的知识 …...

JDBC学习(复习)-面试总结详细

JDBC详细介绍一、JDBC详细介绍二、jdbc面试总结2.1 JDBC操作数据库的步骤 ?2.2 JDBC中的Statement 和PreparedStatement,CallableStatement的区别?2.3 JDBC中大数据量的分页解决方法?2.4 说说数据库连接池工作原理和实现方案?2.4…...

前端:你不知道的async await

1.先抛出一个场景:你是否在日常开发中经常使用类似代码?async function getXXList () {const result await this.getArrListApi({page:1,id:2})this.arr result.data.listconsole.log(结果是…, this.arr)……………………其他逻辑代码 }1.1 问题那你是…...

c#前端实现对pcl点云颜色根据强度特征动态变化突出指定对象

前言 本文主要介绍如何使用c# winform对点云颜色根据点云强度信息对显示的点云颜色进行动态调整。 目的是根据强度信息采用不同的颜色特征突出不同的物体。 一、点云强度是什么? 点云强度又可以叫做反射率, 通常常见的点云格式包括:以pcl为…...

如何制定达人营销策略

如今,达人营销不再是一个新兴趋势,而是公司整个数字营销战略的一部分。虽然十年前,达人还不存在,但随着公司对数字化营销依赖度地提升,各个领域的大V群体逐渐壮大,越来越多的公司已经采用了达人营销策略。如…...

100种思维模型之三层解释思维模型-020

很多人认为,世界首富巴菲特的日子很轻松,因为他想要什么就可以买什么。 所以,人人都学巴菲特,但很多人不知道学习他什么…… 润米咨询董事长刘润老师在2020年干了这样一件事情:向100个不认识的人学习。如,向…...

RK系列(RK3568) i2s 音频输入 麦克风驱动

平台:Android12SOC:RK3568外围芯片:XS9922i2s简介:从上图看I2s主要的线有:SDO SCLK LRCK MCLK I2S协议只定义三根信号线:串行时钟信号SCLK(BCLK)、数据信号SD和左右声道选择信号WS。(1&#xff…...

Python|Pymol的安装

​Pymol的使用其实可以分为两种,一种是GUI图形操作界面,直接可以去Pymol官网上下,另一种则是使用API的方式直接调用,适合写脚本批量处理一些东西。建议画图,看结构直接用GUI,但是计算RMSD啥的,用…...

Mysql中关于查询日志的配置详解

查询日志 MySQL中的查询日志保存在文本文件中,能够记录MySQL中的所有数据操作。 开启查询日志 MySQL默认情况下没有开启查询日志,如果需要开启查询日志,则需要在 my.cnf 文件或者 my.ini 文件的 [mysqld] 选项下进行配置。例如,…...

外包整整干了一年,废了。。。

先说一下自己的个人情况,大专生,18年通过校招进入湖南某软件公司,干了接近3年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了…...

内网渗透(五十六)之域控安全和跨域攻击-非约束委派攻击

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…...

初阶C语言——指针【详解】

文章目录1.指针是什么2.指针和指针类型2.1 指针的解引用2.2 指针 -整数3.野指针3.1 野指针成因3.2 如何规避野指针4. 指针运算4.1 指针-整数4.2 指针-指针4.3 指针的关系运算5. 指针和数组6. 二级指针7. 指针数组1.指针是什么 指针理解的2个要点: 指针是内存中一个最…...

MySQL tinyint(1) 、int(32) 与 varchar(255) 长度含义不同

MySQL tinyint(1) 、int(32) 与 varchar(255) 长度含义不同 发现 tinyint(1),int(32) 和 varchar(255) 这里面的数字的含义是不同的。 先说数字类型 tinyint 和 int 等 他们能存储的字节大小是与类型绑定的,即定义了 tinyint 或者 int 就确定了能存储…...

搜索旋转排序数组、路径总和 II、拆分数字

文章目录搜索旋转排序数组(数组、二分查找)路径总和 II(树、深度优先搜索)拆分数字(算法)搜索旋转排序数组(数组、二分查找) 整数数组 nums 按升序排列,数组中的值 互不…...

QT自绘标题和边框

在QT中如果想要自绘标题和边框,一般步骤是: 1) 在创建窗口前设置Qt::FramelessWindowHint标志,设置该标志后会创建一个无标题、无边框的窗口。 2)在客户区域的顶部创建一个自绘标题栏。 3)给窗口绘制一个背…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...