一、环境搭建

1.概述

由于项目需要进行UDS诊断测试,所以对这方面进行了研究学习,网上很少能查询到相关资料,故记录一下UDS自动化测试开发过程,由于保密原则,案例都是Demo,希望能帮到感兴趣的朋友。

2.硬件环境

上位机:PCAN

PCAN-USB驱动:https://www.peak-system.com/fileadmin/media/files/pcan-basic.zip

下位机:ECM(发动机控制模块)

3.Python环境

下载地址:https://www.python.org/ftp/python/3.7.9/python-3.7.9-amd64.exe

pip3 install robotframework==3.2.2

pip3 install robotframework-ride==1.7.4.2

pip3 install xlrd==1.2.0

pip3 install udsoncan==1.14

pip3 install python-can==3.3.4

pip3 install can-isotp==1.7

二、项目介绍

1.文件目录

$10--$3E:L2层robot测试用例

Public.robot:L1层关键字方法

UDS_TestReport.zip:自动化测试报告

udstest.py:python封装自定义uds测试方法

UDSTestcase.xlsx:UDS诊断测试用例

2.udstest.py

# _*_ coding:utf-8 _*_

from can.interfaces.pcan.pcan import PcanBus
from udsoncan.connections import PythonIsoTpConnection
import xlrd, os, udsoncan, isotp, sys, binascii class udstest(object):
def __init__(self):
udsoncan.setup_logging() # udslog def get_xlsx(self, sheet):
"获取指定Excel数据"
excel = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'UDSTestcase.xlsx') # 获取用例文件路径
file = xlrd.open_workbook(excel)
list = []
sheet = file.sheet_by_name(sheet) # 获得指定sheet数据
row_value1 = sheet.row_values(0) # 获取第1行的标题
nrows = sheet.nrows # 获取当前sheet行数
ncols = sheet.ncols # 获取当前sheet列数
for i in range(1, nrows): # 从第2行遍历当前sheet
row = sheet.row_values(i) # 获取行数据
dict = {} # 创建空字典
for j in range(0, ncols): # 遍历sheet列,组成字典
if row_value1[j] == 'NO.':
dict[row_value1[j]] = int(row[j])
else:
dict[row_value1[j]] = row[j] # 从第一列开始,将每一列的数据与第1行的数据组成一个键值对,形成字典
list.append(dict) # 将字典添加list中
return list def set_can(self, txid, rxid):
"""can总线相关配置"""
if isinstance(txid, str) or isinstance(rxid, str):
txid = eval(txid)
rxid = eval(rxid)
isotp_params = {
'stmin': 5, # 流控帧间隔时间,0-127ms 或 100-900ns 值从 0xF1-0xF9
'blocksize': 0, # 流控帧单包大小,0表示不限制
'tx_padding': 0, # 当 notNone表示用于填充发送的消息的字节。
'rx_flowcontrol_timeout': 1000, # 在停止接收和触发之前等待流控制帧的毫秒数
'rx_consecutive_frame_timeout': 1000, # 在停止接收和触发 a 之前等待连续帧的毫秒数
}
try:
self.canbus = PcanBus(channel='PCAN_USBBUS1', bitrate=500000) # CAN总线初始化
self.tp_addr = isotp.Address(isotp.AddressingMode.Normal_29bits, txid=txid, rxid=rxid) # 网络层寻址方法
tp_stack = isotp.CanStack(bus=self.canbus, address=self.tp_addr, params=isotp_params) # 网络/传输层(IsoTP 协议)
self.conn = PythonIsoTpConnection(tp_stack) # 应用层和传输层之间建立连接 except:
print(sys.exc_info()[1])
else:
print('CAN配置成功') def uds_request_respond(self, request_command):
"""发送uds请求和接收uds响应"""
if not isinstance(request_command, str): # 判断request_command数据类型
request_command = str(int(request_command))
requestPdu = binascii.a2b_hex(request_command.replace(' ', '')) # 处理request_command
if not self.conn.is_open():
self.conn.open() # 打开连接
try:
self.conn.specific_send(requestPdu) # 发送uds请求
except:
print("发送请求失败")
else:
print('UDS发送请求:%s' % request_command) try:
respPdu = self.conn.specific_wait_frame(timeout=3) # 接收uds响应
except:
print('响应数据失败')
else:
res = respPdu.hex().upper()
respond = ''
for i in range(len(res)):
if i % 2 == 0:
respond += res[i]
else:
respond += res[i] + ' '
print('UDS响应结果:%s' % respond)
self.conn.close() # 关闭连接
self.canbus.shutdown() # 关闭总线
return respond.strip()

3.UDSTestcase.xlsx

3.UDS_TestReport

三、源码地址

git:https://github.com/xiongye105554598/UDS_AutoTest.git

 

Python+Robot Framework实现UDS诊断自动化测试的更多相关文章

  1. python+robot framework实现测报告定制化和邮件发送

    前面已经介绍了python+robot framework自动化框架和基本原理的实现,详情请看 python+robot framework接口自动化测试 本章主要讲解报告已经产生那如何以自动化的方式 ...

  2. Linux CentOS下Python+robot framework环境搭建

    Linux CentOS下Python+robot framework环境搭建   by:授客 QQ:1033553122 操作系统环境:CentOS 6.5-x86_64 下载地址:http://w ...

  3. python+robot framework接口自动化测试

    python+requests实现接口的请求前篇已经介绍,还有不懂或者疑问的可以访问 python+request接口自动化框架 目前我们需要考虑的是如何实现关键字驱动实现接口自动化输出,通过关键字的 ...

  4. Linux CentOS下Python+robot framework环境搭建

    转载自:http://blog.sina.com.cn/s/blog_13cc013b50102vof1.html 操作系统环境:CentOS 6.5-x86_64 下载地址:http://www.c ...

  5. Robot Framework与Web界面自动化测试学习笔记:简单例子

    假设环境已经搭建好了.这里用RIDE( Robot Framework Test Data Editor)工具来编写用例.下面我们对Robot Framework简称rf. 我们先考虑下一个最基本的登 ...

  6. Python + Robot Framework 环境搭建

    一.Python 安装 说明:由于RIDE是基于python2.x开发,后期未做python3.x兼容,所以这里安装python2.7. 链接: https://pan.baidu.com/s/1yf ...

  7. Robot Framework与Web界面自动化测试:简单例子

    假设环境已经搭建好了.这里用RIDE( Robot Framework Test Data Editor)工具来编写用例.下面我们对Robot Framework简称rf. 我们先考虑下一个最基本的登 ...

  8. <转>准备Eclips+python+robot framework环境

    关于python: path添加:C:\Python27;C:\Python27\Scripts; 新加一项:  PYTHON_HOME    C:\Python27 再不行的话,加一个用户变量: P ...

  9. Robot Framework进行web ui自动化测试,浏览器配置说明

    转载请注明出处,谢谢: chrome浏览器: 1.从如下地址下载与本地浏览器版本号一致的chromedriver.exe驱动文件: http://chromedriver.storage.google ...

随机推荐

  1. gitee+typro+picgo搭建博客图床

    gitee+typro+picgo搭建博客图床 前提环境 typro.picgo.nodejs 直接在官网下载即可 下载完成后,打开picgo 安装插件gitee-uploader 1.1-2即可显示 ...

  2. Java LinkedList小记

    1. 基本用法 LinkedList实现了List.Deque.Queue接口,可以按照队列.栈和双端队列的方式进行操作.LinkedList有两个构造方法,一个是默认构造,另一个接受Collecti ...

  3. 通过Rainbond的团队管理去管理已有的组织架构

    针对于多团队管理我先列举几个小问题,看看大家有没有共鸣,我们在刚刚接触并使用Rainbond的时候,仅仅创建一个团队,里面创建一大堆应用,看起来特别乱,进行管理的时候呢,也会非常麻烦,尤其是当团队需要 ...

  4. 搭建简单的SpringCloud项目三:问题及解决

    GitHub:https://github.com/ownzyuan/test-cloud 前篇:搭建简单的SpringCloud项目一:注册中心和公共层 搭建简单的SpringCloud项目二:服务 ...

  5. 华为AppTouch携手全球运营商,助力开发者出海

    内容来源:华为开发者大会2021 HMS Core 6 APP services技术论坛,主题演讲<华为AppTouch携手全球运营商,助力开发者出海>. 演讲嘉宾:华为消费者云服务App ...

  6. A Child's History of England.42

    The names of these knights were Reginald Fitzurse, William Tracy, Hugh de Morville, and Richard Brit ...

  7. Spark(八)【广播变量和累加器】

    目录 一. 广播变量 使用 二. 累加器 使用 使用场景 自定义累加器 在spark程序中,当一个传递给Spark操作(例如map和reduce)的函数在远程节点上面运行时,Spark操作实际上操作的 ...

  8. stlink 无法再keil中识别 按下复位键可以识别

    最近遇到一个很是头痛的问题 本来板子是好好的,就是从公司带回的家里 然后再次用stlink烧写程序的时候就出现了问题: 但是查看电脑端,上面是有stlink的 也就是电脑是好的, 我立刻又试了一下家中 ...

  9. adb命令对app进行测试

    1.何为adb adb android  debug  bridge ,sdk包中的工具,将Platform-tooks 和tools  两个路径配置到环境变量中 2.SDK下载链接:http://t ...

  10. Xcode功能快捷键

    隐藏xcode command+h退出xcode command+q关闭窗口 command+w关闭所有窗口 command+option+w关闭当前项目 command+control+w关闭当前文 ...