一、环境搭建

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. Codeforces 571D - Campus(并查集+线段树+DFS 序,hot tea)

    Codeforces 题目传送门 & 洛谷题目传送门 看到集合的合并,可以本能地想到并查集. 不过这题的操作与传统意义上的并查集不太一样,传统意义上的并查集一般是用来判断连通性的,而此题还需支 ...

  2. Linux环境下R和R包安装及其管理

    前言 R对windows使用很友好,对Linux来说充满了敌意.小数据可以在windows下交互操作,效果很好很棒.可是当我们要处理大数据,或者要在集群上搭建pipeline时,不得不面对在Linux ...

  3. R语言与医学统计图形-【10】ggplot2图形映射

    ggplot2绘图系统--图形映射 颜色的映射. #aes中映射变量 ggplot()+geom_point(aes(x=carat,y=price,color='blue'),#color视为单一变 ...

  4. mysql—从字符串中提取数字(类型1)

    select reason,CHAR_LENGTH(reason),mid(reason,5,CHAR_LENGTH(reason)-5)+0 from `table` 解释: CHAR_LENGTH ...

  5. 基于tp5免费开源的后台管理系统

    基于tp5免费开源的后台管理系统 可以自定义后台菜单,模块等. 后台模板用的是:AdminLTE 简单的后台基础管理系统,有兴趣开源看看 代码地址:https://github.com/mengzhi ...

  6. 谈一谈 DDD

    一.前言 最近 10 年的互联网发展,从电子商务到移动互联,再到"互联网+"与传统行业的互联网转型,是一个非常痛苦的转型过程.在这个过程中,一方面会给我们带来诸多的挑战,另一方面又 ...

  7. Mybatis逆向工程简单介绍

    转自:https://blog.csdn.net/yerenyuan_pku/article/details/71909325 什么是逆向工程 MyBatis的一个主要的特点就是需要程序员自己编写sq ...

  8. Maven 学习第一步[转载]

    转载至:http://www.cnblogs.com/haippy/archive/2012/07/04/2576453.html 什么是 Maven?(摘自百度百科) Maven是Apache的一个 ...

  9. haproxy动态增减主机与keepalived高级应用

    一:本文将详细介绍haproxy的配置使用以及高级功能的使用,比如通过haproxy进行动态添加删除负载集群中的后端web服务器的指定主机,另外将详细介绍keepalived的详细配置方法.配置实例及 ...

  10. javaAPI2

    ---------------------------------------------------------------------------------------------------- ...