CPAL脚本自动化测试 ———— Diag系列常用函数及使用

诊断模块在CAPL中还是比较成熟的,而且有大量封装好的系列函数可以帮助我们在平时的测试过程中实现自动化测试。这里我就着重介绍一些我们会进场使用到的函数来完成我们日常的测试场景的覆盖。

  1. diagResize 函数
    具体的格式如下。主要是调整诊断对象的大小以匹配指定的参数迭代,或将总线消息的大小设置为给定的字节数。
    在这里插入图片描述
    用例:
diagRequest  PAS3.*  pasDiagReqst;
dword diagLen;
diagLen = stringToBytes(diagString, rawDiagReqst);
diagResize(pasDiagReqst, diagLen);
  1. diagSetPrimitiveByte 函数
    具体的格式如下。主要是用于设定诊断对象指定字节的数值。
    在这里插入图片描述
    用例:
  for(i=0;i<diagLen;i++)
  {
    diagSetPrimitiveByte(pasDiagReqst, i, diagData[i]);
  }
  1. diagSetPrimitiveData 函数
    具体格式如下:主要是用于设置完整服务原语的原始数据(通过传输协议传输的所有数据)。
    在这里插入图片描述
    用例:
// Print the length and first byte of a diagnostic request object
PrintDiagRequestBytes( diagRequest * req)
{
BYTE primitiveRaw[4095];
long size;
size = DiagGetPrimitiveData( req, primitiveRaw, elcount( primitiveRaw));
if( size > 0)
write( "Request = (%d)[%02x ...]", size, primitiveRaw[0]);
else
write( "Request: error %d", size);
}

注意:我对于diagSetPrimitiveData 函数 与 diagSetPrimitiveByte 函数的区别理解是:前者不要增加循环,函数自带该功能;后者主要时针对于指定字节的设置。

  1. TestReportWriteDiagObject/TestReportWriteDiagResponse 函数
    具体格式如下。主要是用于在测试报告中增加诊断请求或响应的报文打印。
    在这里插入图片描述
    用例:
diagRequest  PAS3.*  pasDiagReqst; 
testReportWriteDiagObject(pasDiagReqst);
  1. TestWaitForDiagRequestSent 函数
    具体的格式如下。主要用于定义在指定时间内将要求的诊断请求发送出去。
    在这里插入图片描述
    用例:
DiagRequest SerialNumber_Read req;
long result;

DiagSetTarget("Door");
req.SendRequest();
// waits until request is completely sent
if (TestWaitForDiagRequestSent(req, 2000)== 1)
  TestStepPass("Request was sent successfully!");
else
  TestStepFail("Request could not be sent!");
TestWaitForDiagResponse(req, 2000);
  1. TestWaitForDiagResponse 函数
    具体的格式如下。主要用于定义在指定时间内是否收到诊断请求的响应。
    在这里插入图片描述
    用例:
diagResponse PAS3.*  pasDiagRespd;
const cApplicationTimeoutMs = 5000;
result = testWaitForDiagResponse(pasDiagReqst, cApplicationTimeoutMs)
  1. diagGetLastResponse 函数
    具体的格式如下。主要用于获取最新的诊断请求响应。
    在这里插入图片描述
    用例:
diagResponse PAS3.*  pasDiagRespd;
diagGetLastResponse(pasDiagRespd);
  1. diagGetPrimitiveData 函数
    具体的格式如下。主要用于读取一个诊断服务的原始数据。
    在这里插入图片描述
    用例:
// Print the length and first byte of a diagnostic request object
PrintDiagRequestBytes( diagRequest * req)
{
BYTE primitiveRaw[4095];
long size;
size = DiagGetPrimitiveData( req, primitiveRaw, elcount( primitiveRaw));
if( size > 0)
write( "Request = (%d)[%02x ...]", size, primitiveRaw[0]);
else
write( "Request: error %d", size);
}
  1. diagGetPrimitiveByte 函数
    具体的格式如下。主要用于读取诊断服务中的某一字节的数据。
    在这里插入图片描述
  2. diagIsPositiveResponse / diagIsNegativeResponse 函数
    具体的格式如下。主要用于判断回复的诊断相应是否为正/负响应,如果是则返回一个不为0的数值。
    在这里插入图片描述 在这里插入图片描述
    用例:
on diagResponse *
{
  // Handle the ambiguity of neg responses by treating them as '*'
  if( diagIsNegativeResponse ( this ) )
  {
    write( "Received negative response for service 0x%x, code 0x%x",
    (long) diagGetParameter( this, "SIDRQ_NR" ),
    (long) diagGetParameter( this, "NRC" ) );
  }
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小趴菜_自动驾驶搬砖人

谢谢大爷赏饭吃

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

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

打赏作者

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

抵扣说明:

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

余额充值