创建并配置TestModule模块
右键添加一个测试模块:
然后命名后,ctrl+s保存,创建一个文件夹TestModule,保存文件;
右键:选择 insert CAPL TestModule;
创建完成后右键编辑,进行配置:
1.命名,然后创建can脚本文件,关联到我们的模块上面
2.配置报告
然后通过编辑按钮打开CAPL:
通过这个可以配置报告的输出类型:
这里的can文件是关联到测试模块的;而之前讲的基础的 can文件是关联到总线上的,对应的是ECU;
一些常用函数的说明:
1. 架构相关的函数
2. "等待"相关函数
3. 信号相关函数
4. 测试报告相关函数
5. 探测检查 相关函数
下面是工程开始时的一些基本配置
分组和一些基本信息的配置:
MainTest()
{
setWriteDbgLevel(5);
testReportAddEngineerInfo("测试工程师","zsy");
testReportAddEngineerInfo("工号","00001");
testReportAddEngineerInfo("部门","ADAS测试组");
testReportAddSUTInfo("产品", "引擎ECU");
testReportAddSUTInfo("版本", "EMS1.7.3");
testReportAddSUTInfo("迭代日期", "2022年12月9号");
//=======================================
testModuleTitle("测试标题");
testModuleDescription("这个测试的描述信息...");
testGroupBegin("分组1名称","分组1的描述");
testCase1();
testGroupEnd();
testGroupBegin("分组2名称","分组2的描述");
testCase2();
testCase3();
testGroupEnd();
testCase4();
testCase5();
testCase6();
}
teststep的使用
testcase testCase1(){
testCaseTitle("ts1 标识符","testCase1标题");
testCaseDescription("描述信息");
//测试过程中的步骤,通过函数写入到报告中
testStep("XXX0消息","当前发送了一件OOOO0事件");
//......
testStep("XXX1消息","当前发送了一件OOOO1事件");
testStepPass("事项1","成功XXXXXXXXXXXXXXXXXX");
}
testcase testCase2(){
testStep("XXX0消息","当前发送了一件OOOO0事件");
testStepFail("事项1","失败了XXXXXXXXXXXXXXXXXX");
}
监听某一个状态的结果
testcase testCase3(){
int matchedResult; //监听某一个状态的结果
testStep("步骤1","当前发送了一件OOOO0事件,需要一定时间执行");
//让当前的程序等待1000ms再继续执行;
testWaitForTimeout(2000);
testStep("步骤2", "继续后续的事项");
//等待某一个信号出现某种状态
//或者说是规定时间内监听信号的某个状态的出现
matchedResult = testWaitForSignalMatch(OnOff,1,1500);
if(matchedResult == 1){
testStepPass("监听引擎","开启成功");
}else if(matchedResult == 0){
testStepFail("监听引擎","开启失败");
}
}
让程序弹出一个确认对话框,让用户进行“是”、“否”的选择
testcase testCase4(){
// 让程序弹出一个确认对话框,让用户进行“是”、“否”的选择
// 一直等待到用户确认后,才继续后续的代码
int confirmedResult;
confirmedResult = testWaitForTesterConfirmation("请确认当前转速表上是否显示的为2000转?");
if(confirmedResult == 1)
{
testStepPass("用例执行通过", "转速表满足预期值:2000");
}
else if(confirmedResult == 2)
{
testStepFail("用例执行失败", "转速表不满足预期值:2000");
}
}
“信号”相关的函数(只检查,不判决,也就是不给出testStepPass/testStepFail)
testcase testCase5(){
long checkESFlag; //检查转速的结果(区间)
long checkHLFlag;//检查头灯是否开启(单个值)
// 检查EngineSpeed信号的值必须在1000到2000之间,返回一个检查结果的标志
checkESFlag = checkSignalInRange(EngineSpeed,1000,2000);
writeDbgLevel(5,"检查结果%d",checkESFlag);
writeDbgLevel(5,"当前转速:%d",$EngineSpeed);
if(checkESFlag == 1){
testStepPass("success","转速验证成功[1000,2000],当前为%d",(int)$EngineSpeed);
}else if(checkESFlag == 0){
testStepFail("fail","转速验证失败,当前为%d",(int)$EngineSpeed);
}
checkHLFlag = checkSignalMatch(HeadLight,1);//单个值
if(checkHLFlag == 1){
testStepPass("success","车灯状态验证:1,当前为%d",(int)$HeadLight);
}else if(checkHLFlag == 0){
testStepFail("fail","车灯状态验证失败,当前为%d",(int)$HeadLight);
}
}
// “信号”相关的函数(检查后进行判决)
testcase testCase6(){
testValidateSignalInRange("检查引擎转速",EngineSpeed,1000,2000);
testValidateSignalMatch("检查头灯状态",HeadLight,1);
}