目录
0 引言
1 XML简介
2 通过XML调用CAPL脚本
0 引言
纪念一下今天这个特殊日子,四年出现一次的29号。
在CANoe中做自动化测试常用的编程方法有CAPL和XML两种,二者各有各的特色,对于CAPL来说新手肯定是更熟悉一些,因为说到在CANoe Test Module中写脚本那基本80%用的都是CAPL,但它的缺点也很明显就是不灵活,测试case的控制总体是通过MainTest()来实现的,当工程运行起来后没有办法自由转换测试用例。
void MainTest()
{
tWakeUp_200 = 5;
tSleep = 6000;
testWaitForTimeout(2000);//等待系统变量的响应;
testModuleTitle(" NM Automation Test");
testGroupBegin("NM Test","");
BSM_To_RMS(); //测试用例1
RMS_To_RSS(); //测试用例2
testGroupEnd();
}
所有的测试用例都被集成在了CAPL测试文件中不能自由选择:
而使用XML的方法就很好的克服这些缺点,每个case都是独立的个体,可以自由的去选择想要测试的测试用例,这与在VT中生成的case相类似。但XML对新手基本来说是一种陌生的语法,专门使用XML去编写case也会占用不少的时间成本去学习。因此本文重在讲解一种融合了XML的灵活性和CAPL的易上手性相结合的方法来帮助新手提升测试效率,并且了解两种语言的魅力。
1 XML简介
帮助文档中对XML的介绍如下,感兴趣的朋友可以自行阅读:
当要从现有数据生成大量测试用例时,在XML中使用文本模块是特别方便的。由于XML文件基本上包含测试参数,因此生成器必须简单地将现有数据转换为所需的XML形式。
一个XML测试模块由:任意数量的测试用例组成,这些测试用例可以分组在测试组中。测试用例按照在XML文件中定义的顺序进行处理。单个测试用例可以从执行对话框的执行中排除。每个测试用例通常由单独的测试和控制功能组成。一旦测试/控制功能失败或违反约束/条件,被执行的测试用例就会终止,并在测试报告中被标记为失败。测试模块本身不会中止;测试只是继续进行下一个测试用例。
2 通过XML调用CAPL脚本
使用XML和CAPL相结合的方法进行测试:
1.创建XML节点得到XML文件:
2.在XML文件中输入如下代码:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<testmodule title="123" version="V1.0">
<!--variants >
<variant name="All" > </variant>
<variant name="Auto" > </variant>
<variant name="SemiAuto" > </variant>
<variant name="NA"> </variant>
</variants-->
<testgroup title="123">
<capltestcase name="MotorMovePoweroff" //name 双引号里的内容要与testcase的名字相一致 title="MotorMovePoweroff"> </capltestcase>
<capltestcase name="PowerSlowUpDown" title="PowerSlowUpDown"> </capltestcase>
<capltestcase name="PowerandSleepMode" title="PowerandSleepMode"> </capltestcase>
<capltestcase name="PowerSlowUpDown" title="PowerSlowUpDown"> </capltestcase>
<capltestcase name="EcuStandby" title="EcuStandby"> </capltestcase>
<capltestcase name="PowerSlowUpDown" title="PowerSlowUpDown"> </capltestcase>
<capltestcase name="PowerSlowUpDown" title="PowerSlowUpDown"> </capltestcase>
<capltestcase name="StressTest_EOLselflearning" title="StressTest_EOLselflearning"> </capltestcase>
<capltestcase name="HighVoltageMotorMove" title="HighVoltageMotorMove11"> </capltestcase>
<capltestcase name="LowVoltageMotorMove" title="LowVoltageMotorMove"> </capltestcase>
<capltestcase name="ZeroGravityToDefaultPositionAndRetract" title="ZeroGravityToDefaultPositionAndRetract"> </capltestcase>
<capltestcase name="ZeroGravityToDefaultPositionBeinterruptedAndRetract" title="ZeroGravityToDefaultPositionBeinterruptedAndRetract"> </capltestcase>
<capltestcase name="ZeroGravityToSEMI_DefaultPositionAndRetract" title="ZeroGravityToSEMI_DefaultPositionAndRetract"> </capltestcase>
<capltestcase name="ZeroGravityUnfoldMemory" title="ZeroGravityUnfoldMemory"> </capltestcase>
</testgroup>
</testmodule>
3 在XML节点中导入我们所需的CAPL文件:
4.完成如下图所示:
TIPs:
a. 需要注意的时导入XML中的CAPL脚本内不能含有 MainTest()
b.在XML文件中capltestcase name=“A”,A必须和CAPL脚本中的测试用例的名称相一致