CPAL脚本自动化测试 ———— 函数与测试函数对测试报告的影响

本文介绍了CAPL库中的普通函数和测试函数的命名方式及报告输出。普通函数用于一般功能实现,而测试函数在复杂场景下能更好地组织测试步骤,提高测试报告的可读性。通过例子展示了两种函数在执行和结果展示上的差异,强调在处理多个步骤和关联性强的测试用例时,使用testfunction的优势。
摘要由CSDN通过智能技术生成


 在编写测试脚本的过程中,我们无法避免的需要自己定义一些API函数完成指定的目标。在CAPL库中,存在着两大类的函数:一种是普通函数,一种是测试函数。这篇文章主要是介绍这两种函数的之间的区别以及自己在使用过程中的一些常用场景。这两种函数并没有高下之分,只是在处理不同问题上有自己的优势而已。

普通函数

命名方式

 以下方的函数为例。这里先定义了函数类型为 int 型,后面则是函数名和参数名。

int func_Comm_SetSig_Chk(signal *aSig, float val)
{
  long result;
  char buffer[64];
  
  buffer[0] = '\0';
  getSignalDescriptionForValue(aSig, val, buffer, elCount(buffer));
  
  
  /*Step 1 to set a signal value*/
  $aSig.phys = val;
  
  result = testWaitForSignalMatch(aSig, val, 300);
  
  if(1 != result){
    testStepFail("1","%s \n value is [ %.3f ], failed to set as expected [ %.3f ] [ %s ].",aSig.name, $aSig.phys,  val, buffer);
    return -1;
  }
  else{
    testStepPass("1","%s \n value is [ %.3f ], set as expected [ %.3f ] [ %s ].",aSig.name, $aSig.phys, val, buffer);
  }
  
  return 1;
}

报告输出

 下方截图中的每一个灰色方框的执行命令及其结果。总的来说,你可以看到每一个函数的执行结果。
在这里插入图片描述

测试函数

命名方式

 以下方的函数为例。这里先定义了函数类型为testfunction,后面则是函数名和参数名。

testfunction tstf_APA_Off_Mode_ConditionSet()
{
  func_Comm_SetSig_Chk(isVehModMngtGlbSafe1UsgModSts, 0);   //abandon
  func_Comm_SetSig_Chk(isEngSt1WdStsEngSt1WdSts, 0x5);   //abandon
  func_APA_ButPress_PrkgInOrOutAndCncl(0);
  func_APA_ButPress_DrvrAsscSysBtnPush(0);
}

报告输出

 下方有整个testfunction的测试结果,其中每一个函数的执行结果也在其中进行了一一展示。总的来说,你可以看到每一个测试函数以及内部函数的执行结果。
在这里插入图片描述

总结

 对于场景简单的测试场景来说,这两者的区别可能并没有太大。但是,对于复杂的场景来说,如果前后关系具有强相关的性质,并且操作步骤很多。可以想象一下,其中的某一步执行结果为 Failed 。那么,如何将函数与在测试用例中的关系对应起来,这是否会耗费大量的时间呢?你说你可以通过函数名快速定位,那如果用例里面本身就存在着多个步骤使用到同一函数,你又有什么办法呢?例如下图:
在这里插入图片描述
 在这整个测试步骤中,有8个测试点需要检查。这份报告的输出,可以很明确的告诉我这个测试步骤不通过,并且是第1、2、3、5、6、7、8 这七个测试点不通过。通过普通函数也可以知道测试点的失败,但我相信检查起来并没有使用 testfunction 迅速。同时,恰当的使用 testfunction 函数会将你的主程序简化不少,输出的测试报告的可读性更高。

diagSetParameterRaw是一个函数,用于将获取的密钥赋值给数组。这个函数的具体结构和格式要求如下: diagSetParameterRaw(obj, parameterName, buffer, length) 其中,obj是诊断的受体ECU的名称,可以从其他函数获取;parameterName是要设置的参数的名称,可以从CANoe工程中的CDD文件中查询;buffer是用于存储密钥的数组;length是数组的长度。 通过调用diagSetParameterRaw函数,可以将生成的密钥赋值给相应的参数,并将其发送出去,以完成相关的操作。这个函数的正确使用对于发送密钥的请求非常重要,因此请确保填写正确的参数名称。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [CAPL中语言中修改诊断服务的参数](https://blog.csdn.net/ye_zi99/article/details/131246284)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [怎么用Canoe CAPL发送诊断](https://blog.csdn.net/glenwan/article/details/123584394)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [CPAL脚本自动化测试 ———— 诊断模块的安全解锁函数分析](https://blog.csdn.net/qq_42957717/article/details/107215573)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小趴菜_自动驾驶搬砖人

谢谢大爷赏饭吃

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值