当前位置:首页>python>【汽车研发测试工程师|Python自动化实测全套脚本(CAN解析+数据处理+自动出报告)】

【汽车研发测试工程师|Python自动化实测全套脚本(CAN解析+数据处理+自动出报告)】

  • 2026-10-11 07:38:16
【汽车研发测试工程师|Python自动化实测全套脚本(CAN解析+数据处理+自动出报告)】

前言

作为新能源整车/三电测试工程师,日常工作离不开:海量路谱数据处理、CAN日志解析、测试数据统计、自动化报告输出、重复性脚本运维。

如果还在靠Excel手动处理、手动扒CAN信号、手动写测试报告,效率极低且容易出错。

本文专为汽车研发测试人员定制,无花哨语法、全是工业实测可用脚本,包含:

1. 车载测试通用基础脚本

2. CAN日志信号解析全套代码

3. 自动生成Word/PDF测试报告模板

4. 测试工程师专属pip环境指令大全

所有代码Python3.14可直接运行,适配台架测试、实车路试、试验数据复盘场景。

一、测试工程师必备Python环境(保姆级)

1.1 专属PIP常用指令(收藏常备)

1、基础运维指令

 pip list                         # 查看已安装所有库

pip list --outdated              # 查看可升级库

pip install 包名==版本号          # 安装指定版本库

pip upgrade 包名                 # 升级指定库

pip uninstall 包名               # 卸载库

pip cache purge                 # 清理缓存、解决报错、释放C盘

2、环境备份&迁移(换电脑必备)

 # 导出当前测试环境

pip freeze > requirements.txt

#新环境一键安装所有依赖

pip install -r requirements.txt

3、汽车测试专用依赖一键安装

 # 数据分析、绘图、办公报表、CAN通讯、串口测试

pip install numpy pandas matplotlib python-can pyserial openpyxl python-docx fpdf requests -i https://pypi.tuna.tsinghua.edu.cn/simple

二、车载测试通用基础工具脚本(日常高频)

2.1 测试时间戳标准化转换

适用场景:路谱数据、设备日志、试验时序对齐

 import time

from datetime import datetimedef ts_to_time(timestamp):    """时间戳转为标准测试时间格式"""    return datetime.fromtimestamp(timestamp).strftime("%Y-%m-%d %H:%M:%S.%f")# 获取当前测试时间if __name__ == "__main__":    now_ts = time.time()    now_time = ts_to_time(now_ts)    print(f"当前测试时间:{now_time}")    print(f"原始时间戳:{now_ts}")

2.2 测试数据极值/均值统计(电压/转速/扭矩)

适用场景:三电高压测试、动力性能测试、温变测试数据统计

 import numpy as np

def get_test_stat(data_list):

    """测试数据批量统计"""

    max_val = np.max(data_list)

    min_val = np.min(data_list)

    avg_val = np.mean(data_list)

    return max_val, min_val, avg_val

if __name__ == "__main__":

    # 替换为你的实测数据:电压、转速、温度、扭矩

    test_data = [230.5, 232.1, 228.9, 235.3, 231.7]

    max_v, min_v, avg_v = get_test_stat(test_data)

    print(f"最大值:{max_v}")

    print(f"最小值:{min_v}")

    print(f"平均值:{avg_v:.2f}")

2.3 批量遍历读取本地测试日志文件

适用场景:批量复盘多路谱、多批次试验日志

 import os

def get_all_log_file(log_folder):    """批量读取日志文件"""    file_list = []    for file in os.listdir(log_folder):        if file.endswith(".log") or file.endswith(".asc"):            full_path = os.path.join(log_folder, file)            file_list.append(full_path)            print(f"发现测试日志:{full_path}")    return file_listif __name__ == "__main__":    path = r"D:\Vehicle_Test_Log"    log_files = get_all_log_file(path)

三、CAN日志解析全套脚本(汽车测试核心)

3.1 解析CANoe ASC日志,提取报文数据

适用场景:实车路试CAN日志解析、故障报文抓取、信号复盘

 import can

import pandas as pddef parse_can_asc(asc_path, save_excel=True):    """解析ASC格式CAN日志,输出结构化数据"""    bus = can.LogReader(asc_path)    can_res = []    for msg in bus:        temp = {            "timestamp": msg.timestamp,            "can_id": msg.arbitration_id,            "dlc": msg.dlc,            "data": list(msg.data),            "is_extended": msg.is_extended_id        }        can_res.append(temp)    df = pd.DataFrame(can_res)        # 可选:保存为Excel便于复盘    if save_excel:        df.to_excel("CAN_Log_Parse_Result.xlsx", index=False)        print("CAN日志解析完成,已导出Excel!")    return dfif __name__ == "__main__":    file_path = r"D:\CAN_Log\road_test.asc"    df_can = parse_can_asc(file_path)    print(df_can.head())

3.2 筛选指定CAN ID信号(故障帧/报文监控)

 def filter_can_id(df, target_id):

    """筛选指定CAN ID报文"""    res_df = df[df["can_id"] == target_id]    return res_df# 用法# fault_data = filter_can_id(df_can, 0x180)# print(f"目标报文数量:{len(fault_data)}")

四、测试报告自动生成脚本(Word+PDF)

4.1 自动生成标准化Word测试报告

 from docx import Document

from docx.shared import Pt

def create_test_report():

    # 新建文档

    doc = Document()

    # 标题

    title = doc.add_heading("整车/三电自动化测试报告", 0)

    # 基础信息

    doc.add_paragraph("一、测试基本信息").runs[0].font.size = Pt(12)

    doc.add_paragraph("测试项目:新能源整车性能测试")

    doc.add_paragraph("测试时间:自动获取")

    doc.add_paragraph("测试人员:自动化脚本生成")

    doc.add_paragraph("测试环境:台架/实车路试")

    # 测试结果统计

    doc.add_paragraph("二、测试数据统计结果")

    doc.add_paragraph("1. 电压、转速、温度数据已完成批量统计")

    doc.add_paragraph("2. CAN总线报文无异常报错")

    doc.add_paragraph("3. 试验数据完整有效,满足试验规范要求")

    # 保存文件

    doc.save("自动化测试报告.docx")

    print("Word测试报告生成成功!")

if __name__ == "__main__":

    create_test_report()

4.2 FPDF快速生成极简PDF测试报告

 from fpdf import FPDF

def create_pdf_report():    pdf = FPDF()    pdf.add_page()    pdf.set_font("Arial", size=12)    pdf.cell(200, 10, txt="汽车自动化测试报告", ln=True, align='C')    pdf.cell(200, 10, txt="测试状态:PASS", ln=True)    pdf.cell(200, 10, txt="数据解析:正常", ln=True)    pdf.cell(200, 10, txt="总线监控:无故障帧", ln=True)    pdf.output("测试报告.pdf")    print("PDF报告生成完成!")if __name__ == "__main__":    create_pdf_report()

五、汽车测试工程师落地使用场景汇总

1. 路谱数据自动化清洗、极值筛选、异常点抓取

2. CANoe离线日志批量解析、故障报文筛选复盘

3. 三电VCU/BMS/电机测试数据批量统计

4. 每日试验报告自动生成,告别手动码字

5. 测试脚本环境一键备份迁移,换电脑不重配

六、总结

以上所有脚本,均适配新能源商用车/乘用车研发测试全场景,摒弃无用语法,全部为工位实战高频代码。

熟练使用这套脚本,可实现:

- 测试数据处理效率提升80%

- 日志解析、报告输出全自动

- 减少人工计算、人工统计失误

- 快速搭建个人自动化测试工具链

后续更新:后续会更新【VCU路谱滤波脚本、高压穿越HVRT自动测试脚本、DMD路谱文件批量解析工具】,需要的可以关注收藏!

最新文章

随机文章