【CAPL】创建自动化测试脚本
创建测试模块
测试模块各个部分的包含关系
-
test module > test environment > CAPL module节点(test 3) > test case
-
注意区分测试环境文件和CAPL case文件
- test environment:script文件夹下的.tse文件,File-save 保存
- CAPL module:nodes文件夹下的.can文件,右键edit打开CAPL编辑器并保存
创建test environment
- Test大类 - Test Setup - 右击:new test environment
![图片]()
创建测试节点
- 右键test environment:插入CAPL test module
![图片]()
保存测试环境文件
-
注意:这里保存的是测试环境,和CAPL文件区分
-
未运行时,file-save - 选择路径
- 一般创建名为script的文件夹并放入
![图片]()
- 一般创建名为script的文件夹并放入
-
或选中environment右击-save as
![image]()
在CAPL节点添加case
- 选中CAPL节点,如图的test3 -右键:edit,重命名后打开CAPL编辑器界面
- 注意:不是 双击,双击为打开case运行界面
![图片]()
case的CAPL代码
可选:include和variable
- 可选,按需
- 不动也可
-
代码示例
includes { //可选 //#include "..\Nodes\valueFunction.cin" } variables { }
必需:void maintest(){}
-
重要函数
- 用于设置在报告中展示的信息:testModuleTitle()/testModuleDescription()
![图片]()
- test case开始标志:
![图片]()
- test case结束标志:
![图片]()
- 用于设置在报告中展示的信息:testModuleTitle()/testModuleDescription()
-
代码示例
void maintest() { testModuleTitle("this is my first script"); testModuleDescription("only demo my script for description"); testGroupBegin("this is group title","this is group description");//开始 test1();//测试内容1 test2();//测试内容2 testGroupEnd();//结束 }
可选:自定义函数
- 如果在maintest()中用到,则需要添加自定义函数
- 这个和其他CAPL代码中的自定义函数一样处理
-
代码示例
//因maintest()中用到test1() void test1() { write("this is test 1"); }
善用帮助文档:maintest()相关代码示例
运行测试脚本
前提:需要运行CANoe工程
- 小闪电要在运行状态
打开test module的运行操作窗口
- 法1:选中右键-execution
- 法2:直接双击TestModule
![图片]()
运行测试脚本
- CANoe工程:运行
- test3窗口:右下角的向右三角运行脚本
- 脚本结果:会在passed位置显示passed or failed
![图片]()
查看报告
- 在靠近右下角的图标处点开报告,如图
![图片]()
![图片]()
查看write窗口输出结果
定义case
新建testcase()
- 左侧大纲-右击-new test case,在代码区插入一个testcase demo()模块
![image]()
CAPL写入test case
-
testcase的title和description

teststep:用于描述
- teststep涉及的4个函数:都是描述型,对测试结果没有影响
![image]()
加入等待输入input:中断当前流程
2个函数配合使用
TestWaitForStringInput()的定义:
![image]()
TestGetStringInput()的定义:
![image]()
- 代码示例:
char answer[100]; if (1== TestWaitForStringInput("Please enter your name", 5000)) //5000:等待5000ms后自动结束输入等待 //如果不需要倒计时,可以删掉这个参数位 { TestGetStringInput(answer, 100); Write("name = %s", answer); }
运行结果
- 测试报告:可见定义步骤的输出
- 其中overview:可查看定义的test module信息,如title等
![image]()
代码参考
- 注:maintest()部分只写了执行demo(),也执行成功了
testcase demo() { //函数内部变量 char answer[100]; testCaseTitle("TC 1.0","this is a testcase title"); testCaseDescription("this is a testcase description"); //第一步代码 testStep("1.0","this is step 1.0"); testStepPass("1.1","this is step 1.1-pass test"); testStepFail("1.2","this is step 1.2-fail test"); testStepWarning("2.3","this is step 2.3-warming test"); //跳出,等待input if (1== TestWaitForStringInput("Please enter your name", 50000)) { TestGetStringInput(answer, 100); Write("name = %s", answer); } } void MainTest () { demo(); }
## END




















浙公网安备 33010602011771号