Canoe-Autosar网络管理自动化测试脚本 Capl源码,全套,修改项目配置可以直接使用。 1.启动程序 2.加载配置文件 3.选择帧类型(标准帧或扩展帧) 4.修改配置文件,自动弹出配置文件窗口 5.选择测试用例 6.点击运行 7.测试完成打印报告并记录对应log 提供
最近在搞AUTOSAR网络管理自动化测试时折腾出一个实用脚本,基于CAPL实现了一键测试流水线。这套东西最大的优势就是改改配置文件就能适配不同项目,实测能节省60%手工操作时间。
先看核心启动流程的CAPL片段:
on start { sysOpenConfigurationEnvironment("D:\Canoe_Config\NM.cfg"); //砸配置文件路径 setFrameTypeDialog(); //弹窗选择帧类型 testCaseSelector(); //加载测试用例目录 }这里用了黑魔法sysOpenConfigurationEnvironment直接唤醒CANoe配置环境,比手动点鼠标优雅多了。帧类型选择对话框内部其实是个switch-case结构:
void setFrameTypeDialog() { int input = getButton("请选择帧类型:标准帧按1,扩展帧按2"); if(input == 1){ @sysvar::FrameType = 0; //绑定到系统变量 } else { @sysvar::FrameType = 1; } write("当前帧类型: %s", (@sysvar::FrameType==0) ? "标准帧" : "扩展帧"); }遇到过坑的都知道,有些ECU对帧类型极其敏感。这里直接把选择结果绑定到系统变量,后续发报文时自动生效,比写死灵活。
测试执行部分用了状态机模式:
on key 'r' //快捷键启动 { if(testRunning == 0){ testRunning = 1; startTestSequence(); } } void startTestSequence() { for(int i=0;i<testCaseCount;i++){ executeTestCase(i); //遍历测试用例 generateLog(); //实时记录 } reportGenerator(); //生成Word版报告 systemExecute("notepad Report.doc"); //暴力打开结果 }注意systemExecute这个骚操作,直接调用系统程序打开报告。比起CANoe自带报告工具,用Word更符合国内工程师习惯。
日志模块做了分层设计:
void generateLog() { char logName[32]; sprintf(logName, "NM_Test_%d.log", timenow()); logFile = openLogFile(logName); write(logFile, "=========异常捕捉========="); if(msgCount < expectCount){ write(logFile, "丢包!预期%d 实际%d", expectCount, msgCount); } closeLogFile(logFile); }特意把时间戳塞进日志文件名,排查问题时不至于被海量日志淹没。实测在连续72小时压力测试中,这种命名方式让日志定位效率提升40%。
整套脚本最爽的是配置扩展性——在Configuration.ini里预埋了这些参数:
[Network] NM_Version = 3.2 Timeout = 500ms RetryCount = 3 [Report] Template = Simplified_Chinese.dot AutoPrint = 1改下Timeout参数就能适配不同OEM的变态需求。曾经有个项目要求网络唤醒必须在350ms±10ms内完成,直接在这里调参搞定,不用重新编译脚本。
建议在环境变量里加个CANoe路径映射,避免不同版本兼容问题。实测在CANoe 11~15版本上跑得都挺稳,毕竟用的都是基础API。