【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的文件夹并放入
      图片
  • 或选中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结束标志:
      图片
  • 代码示例

    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

image

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
posted @ 2025-08-13 15:37  anliux  阅读(370)  评论(0)    收藏  举报