如何通过CAPL将CANoe测试结果直接记录至CSV文件?
可以用CAPL直接导出测试用例结果至CSV,以下是具体实现方案
完全可行,CAPL的文件操作函数支持写入任意格式的文本文件,CSV本质就是逗号分隔的文本,只需按格式组织内容即可实现。
核心实现步骤
初始化CSV文件
用openFileWrite()打开目标CSV文件,建议使用绝对路径避免路径歧义,同时处理文件打开失败的异常情况。写入CSV表头
先写入测试结果的字段名(如测试用例ID、名称、结果、执行时长),字段间用逗号分隔,写完后换行。捕获测试用例结果
利用CAPL的测试回调函数on TestCaseEnd(),在每个测试用例执行完成后,通过testCaseGetName()、testCaseGetResult()、testCaseGetDuration()等API获取测试用例的关键信息。格式化并写入数据
将获取到的测试信息按CSV格式拼接成一行,注意处理特殊字符(如字段含逗号时,用双引号包裹字段内容),再写入文件。关闭文件
在测试结束的on stop回调中关闭文件,确保所有数据写入完成。
示例代码
variables { long csvFileHandle; } on start { // 创建目标目录(避免路径不存在导致文件打开失败) fileCreateDir("C:\\TestResults"); // 打开CSV文件,第二个参数0表示覆盖已有文件,1表示追加 csvFileHandle = openFileWrite("C:\\TestResults\\TestCaseResults.csv", 0); if(csvFileHandle == 0) { write("无法打开CSV文件,请检查路径权限!"); return; } // 写入CSV表头 fileWriteLine(csvFileHandle, "测试用例ID,测试用例名称,测试结果,执行时长(ms)"); } on TestCaseEnd { if(csvFileHandle == 0) return; char testCaseName[256]; long testCaseResult; dword execTimeMs; long testCaseId; // 获取测试用例核心信息 testCaseId = testCaseGetId(); testCaseGetName(testCaseName, elcount(testCaseName)); testCaseResult = testCaseGetResult(); execTimeMs = testCaseGetDuration(); // 转换结果为可读文本 char resultText[32]; switch(testCaseResult) { case 0: strcpy(resultText, "通过"); break; case 1: strcpy(resultText, "失败"); break; case 2: strcpy(resultText, "不确定"); break; default: strcpy(resultText, "未知"); break; } // 处理含特殊字符的字段(如名称含逗号时用双引号包裹) char formattedName[256]; if(strstr(testCaseName, ",") != 0) { snprintf(formattedName, elcount(formattedName), "\"%s\"", testCaseName); } else { strcpy(formattedName, testCaseName); } // 拼接CSV行并写入 char csvLine[512]; snprintf(csvLine, elcount(csvLine), "%d,%s,%s,%d", testCaseId, formattedName, resultText, execTimeMs); fileWriteLine(csvFileHandle, csvLine); } on stop { if(csvFileHandle != 0) { closeFile(csvFileHandle); csvFileHandle = 0; write("测试结果已成功导出至CSV文件"); } }
注意事项
- 路径权限:确保CANoe有目标目录的写入权限,必要时以管理员身份运行CANoe。
- 特殊字符处理:如果测试用例名称包含逗号、双引号等,必须按CSV规范转义(如双引号包裹字段,内部双引号替换为两个双引号)。
- 脚本挂载:将该CAPL脚本关联到测试环境的
Test Setup节点中,确保回调函数能被触发。
内容的提问来源于stack exchange,提问作者Bace Gosho
相关产品推荐
相关产品推荐

