🌎相关文章
🌎前言
- 🍅 这一节我们再来探讨下,xml 控制语句
- 🌳测试软硬件环境:
- Win10 x64
- CANoe 11 SP2 x64
🌎判断语句 if else
- 1️⃣ CAPL XML 的 逻辑判断是
Choice ,语法如下图:
- 2️⃣ 在XML TEST NODE中加载如下的 xml 文件:
下面测试代码实现的功能逻辑是,通过choice 关键字,确定进行判断的symbol ,比如这里判断信号RLCR_1_SysSt
- 当 信号
RLCR_1_SysSt = 0 ,在报告中打印 signal is Off - 当 信号
RLCR_1_SysSt = 1 ,在报告中打印 signal is On - 当 信号
RLCR_1_SysSt = other ,在报告中打印 signal is unexpected value
<testmodule title='XML Debug' version='1.1'>
<testcase ident='' title='if else test'>
<choice title='siganl RLCR_1_SysSt'>
<if title='SysSt_Off'>
<condition>
<cansignal name='RLCR_1_SysSt'><eq>0</eq></cansignal>
</condition>
<body>
<comment>signal is Off</comment>
</body>
</if>
<if title='SysSt_On'>
<condition>
<cansignal name='RLCR_1_SysSt'><eq>1</eq></cansignal>
</condition>
<body>
<comment>signal is On</comment>
</body>
</if>
<else>
<comment>signal is unexpected value</comment>
</else>
</choice>
</testcase>
</testmodule>
- 信号
RLCR_1_SysSt = 0 ,在报告中打印 signal is Off
- 信号
RLCR_1_SysSt = 1 ,在报告中打印 signal is On
🌎 在条件语句中调用 capl function
- 1️⃣ 用
varset_bycapl 标签包裹 capl function ,当满足条件后,去执行capl中的函数
<testmodule title='XML Debug' version='1.1'>
<preparation>
<vardef name='crash' type='int'>0</vardef>
</preparation>
<testcase ident='' title='if else test'>
<choice title='siganl RLCR_1_SysSt'>
<if title='SysSt_Off'>
<condition>
<cansignal name='RLCR_1_SysSt'><eq>0</eq></cansignal>
</condition>
<body>
<varset_bycapl name='crash'>
<caplfunction name='func1' title='func1'/>
<caplparam name='v' type='int'>0</caplparam>
</varset_bycapl>
</body>
</if>
<if title='SysSt_On'>
<condition>
<cansignal name='RLCR_1_SysSt'><eq>1</eq></cansignal>
</condition>
<body>
<varset_bycapl name='crash'>
<caplfunction name='func2' title='func2'/>
<caplparam name='v' type='int'>1</caplparam>
</varset_bycapl>
</body>
</if>
<else>
<comment>signal is unexpected value</comment>
</else>
</choice>
</testcase>
</testmodule>
🌎 循环控制语句for
- 1️⃣CAPL XML 的
for 循环,语法如下图:
<testmodule title='XML Debug' version='1.1'>
<testcase title='for loop test' ident=''>
<preparation>
<vardef name='looptimes' type='int'>0</vardef>
</preparation>
<for_loop title='...' loopvar='looptimes' stopvalue='5' startvalue='0' increment='1'>
<comment>***********************</comment>
</for_loop>
</testcase>
</testmodule>
- 3️⃣ 看下测试结果
🌎 循环控制语句While
- 1️⃣ CAPL XML 的
While 循环,语法如下图:
-
2️⃣ xm 脚本和测试逻辑如下: -
信号 RLCR_1_SysSt 和 RLCR_1_BlkSts 都为0 ,则进入循环,否则跳出循环 如果是逻辑或 可以用 or ,逻辑与用的就是and -
默认,执行1000次循环,自动跳出循环,所以加个wait 标签
<testmodule title='XML Debug' version='1.1'>
<testcase ident='' title='While test'>
<while_loop title='...'>
<condition>
<and>
<cansignal name='RLCR_1_SysSt'><eq>0</eq></cansignal>
<cansignal name='RLCR_1_BlkSts'><eq>0</eq></cansignal>
</and>
</condition>
<body>
<comment>************************************</comment>
<wait title='Wait' time='100ms'/>
</body>
</while_loop>
</testcase>
</testmodule>
- 3️⃣ 测试结果如下,当RLCR_1_BlkSts 等于1了,循环立马跳出来了:
🌎总结
- 🚩要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!
|