在完成了测试用例的设计之后,最终的测试用例执行结果将会以Test Report形式展示。可能测试步骤中并没有包含我们所需要的信息,那这个时候test report系列函数将帮助我们完成这个功能。
- TestReportAddEngineerInfo/TestReportAddSetupInfo/TestReportAddSUTInfo 函数
使用格式如下。主要用于在测试报告中添加一些信息(测试员、测试配置、待测样品)。
用例:
// add information to SUT information table
TestReportAddSUTInfo("Serial No.", "A012345BC");
TestReportAddSUTInfo("Manufactured", "2003-10-02");
// add information to test engineer information table
TestReportAddEngineerInfo("Test Engineer", "S. Grey");
TestReportAddEngineerInfo("Stuff No.", "12345");
// add information to test setup information table
TestReportAddSetupInfo("Tester", "TH12");
- TestReportAddExtendedInfo 函数
使用格式如下。主要用于将信息添加CANoe本身不支持的协议,常见的有HTML、txt、其他文本(将在XML报告中体现,不会再HTML报告中体现)
用例:
// add html line to report, e.g. a link to the homepage
TestReportAddExtendedInfo("html", "<A HREF=\"http://www.vector.com\">Homepage</A>");
TestReportAddExtendedInfo("text", "Output voltage = %d volts)", voltage);
- TestReportAddExternalRef 函数
使用格式如下。主要用于在测试报告中添加外部应用。向报告添加外部引用(URL,DOORS(IBM公司的一个需求管理系统)、eASEE链接),该引用在测试报告中显示为链接。
用例:
testcase tc_1_1()
{
TestCaseTitle("tc_1_1", "Test Case 1.1");
TestReportAddExternalRef("url", "Requirement", "doors://doorssrv:36677/?version=1,prodID=0,dbid=42d2481361dc551c,container=00004600,object=19");
}
- TestReportAddImage 函数
使用格式如下。主要是用于添加图片。在XML或HTML格式的报告中,对于图片的格式也是存在着一定的要求的,这里仅支持JPEG,GIF 和 PNG这三种格式。
用例:
// add image to report, scale down to reasonable size
TestReportAddImage("Oscilloscope Snapshot", "osc_01.png", "400px", "");
- TestReportAddMiscInfoBlock 函数
使用格式如下。主要用于生成一个新的信息区域来记录一些额外的信息。具体的信息需要使用到TestReportAddMiscInfo函数来写入。重新启用TestReportAddMiscInfoBlock 函数、用例执行结束或者调用了新用例聚会导致一个信息块的终止。
用例:
// add info block to test case in report
TestReportAddMiscInfoBlock("Used Test Parameters");
TestReportAddMiscInfo("Max. voltage", "19.5 V");
TestReportAddMiscInfo("Max. current", "560 mA");
- TestReportAddMiscInfo 函数
使用格式如下。主要用于在测试报告中添加一些信息。在使用该函数之前必须先使用TestReportAddMiscInfoBlock创建附加信息区域。 如果使用此功能但没有相应的信息区域,则将在“Write”窗口中生成警告,并自动创建一个新的信息区域。 在此信息区域中,可以使用此功能写入任意数量的信息对。
用例:
// add info block to test case in report
TestReportAddMiscInfoBlock("Used Test Parameters");
TestReportAddMiscInfo("Max. voltage", "19.5 V");
TestReportAddMiscInfo("Max. current", "560 mA");
- TestReportAddWindowCapture 函数
使用格式如下。主要用于抓取某些窗口或面板(Panel)的图片。例如在自动泊车的过程中会有视频输出,我们可以每隔一段时间进行截取,从而记录整个过程中的状态变化。这里的窗口是CANoe工程里面自带的一个窗口,不支持外部设备。例如,可以使用该函数来截取CANoe工程中的Vedio窗口,但是不能截取电脑的Camera窗口。
用例:
testcase tc_1_1()
{
TestCaseTitle("tc_1_1", "Test Case 1.1");
TestReportAddWindowCapture("Trace - Report", "",
"Trace before execution of test case:",
"tc-1.1-trace-before");
... execute Test Pattern(s) ...
if (TestGetVerdictLastTestCase() != 0) {
TestReportAddWindowCapture("Trace - Report", "",
"Testfall failed. Trace am Ende:",
"tc-1.1-trace-after");
}
}
- TestReportWriteDiagObject/TestReportWriteDiagResponse 函数
使用格式如下。主要是将获取到的诊断对象、诊断响应以HTML格式写入到测试报告中。这对于后续的分析还是存在着较大的便利。例如,如果回访log则需要花费太多的时间并且占用设备,如果能在报告中直接获取到响应内容则方便了许多。
用例:
TestCase Test1()
{
// Send Request and react to all possible cases.
diagRequest Door.EcuIdentification_Read idReq;
diagSendRequest( idReq);
switch( TestWaitForDiagResponse( idReq, 200))
{
case 0: // Timeout: The ECU did not respond within 200 ms.
write("No answer from ECU!");
TestStepFail("Read ID", "No answer from ECU!");
break;
case 1: // response received
TestReportWriteDiagResponse(idReq); // write response to report
if( diagGetLastResponseCode(idReq) == -1)
{
// A positive response was received
write("ECU Diagnostics Identification: %d", (long)diagGetRespParameter(idReq,"Diagnostic_Identification"));
TestStepPass("Read ID", "Positiv response received!");
}
else // A negative response was received
{
write( "ECU Diagnostics Identification failed: 0x%x", diagGetLastResponseCode( idReq));
TestStepFail("Read ID", "Negative response received");
}
break;
default: // internal or setup error
TestStepFail("Read ID", "Error in TestCase! Verdict unreliable.");
}
}