CAPL语言之TestModule(一)

创建并配置TestModule模块

image.png

右键添加一个测试模块:

image.png

然后命名后,ctrl+s保存,创建一个文件夹TestModule,保存文件;

image.png

右键:选择 insert CAPL TestModule;


image.png

创建完成后右键编辑,进行配置:
1.命名,然后创建can脚本文件,关联到我们的模块上面


image.png

2.配置报告
image.png

image.png

然后通过编辑按钮打开CAPL:


image.png

通过这个可以配置报告的输出类型:
image.png

这里的can文件是关联到测试模块的;而之前讲的基础的 can文件是关联到总线上的,对应的是ECU;

一些常用函数的说明:

1. 架构相关的函数

image.png

2. "等待"相关函数

image.png

3. 信号相关函数

image.png

4. 测试报告相关函数

image.png

5. 探测检查 相关函数

image.png

下面是工程开始时的一些基本配置

分组和一些基本信息的配置:


image.png
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);
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容