• Jmeter之 forEach 遍历所有值


    今天遇到一个场景,通过正则表达式提取多个值,然后保存到文件中去

    正则表达式
    image

    1、一开始的思路是通过后置 Beanshell断言进行,得到文件数据为 null
    FileWriter fstream=new FileWriter ("D://test.csv",true);
    BufferedWriter out=new BufferedWriter(fstream);
    out.write(vars.get("type")+"\n");
    out.close();
    fstream.close();
    
    2、修改 beanshell 代码
    FileWriter fstream=new FileWriter ("D://test.csv",true);
    BufferedWriter out=new BufferedWriter(fstream);
    
    for(int num=1; num<=5; num++){
      //拼接变量名称
      type = "type"+"_"+num;
      System.out.println(type);
    
      //把拼接的名称赋值给 type_num
      vars.put("type",type);
      System.out.println(vars.get(type));
    
      //vars.get()获取到变量名称,并和上面返回的 type_num_(2,3,4,5,6)名称一致,取到变量的值
      out.write(vars.get(mipAccount)+"\n");
    }
    
    out.close();
    fstream.close();
    

    功能能实现,但是这个需要提前知道循环了多少次得到的数据才正确,不灵活

    3、通过 forEach 控制器进行

    image

    • forEach控制器设置
      名称:字面意思,ForEach Controller的名称
      注释:字面意思
      输入变量前缀:变量的前缀;如要使用的变量为name_1,则需要填name。
      Start index for loop(exclusive):从X-1号的变量开始,X为第几个变量;如填0,实际从第一个开始。
      End index for loop(inclusive):到X+1的变量结束,X为第几个变量;如填4,实际第4个不会被使用,只会到第3个。
      输出变量名称:将要用来使用的变量名,不填则循环所有值
      Add“_”before number?:用户定义的变量有没有下划线分隔编号,最好还是勾上比较方便标识;

    image

    • 在forEach 下添加 Beanshell Sampler ,写上代码
    FileWriter fstream=new FileWriter ("D://test.csv",true);
    BufferedWriter out=new BufferedWriter(fstream);
    out.write(vars.get("newType")+"\n");
    out.close();
    fstream.close();
    

    执行jmeter脚本,检查保存的文件数据,数据正确
    image

  • 相关阅读:
    寒假日报day10
    寒假日报day9
    周计划06(20201026-20201101)
    周计划05(20201019-20201025)
    周总结2
    编程语言的实现模式读后感1
    软工总结
    哈夫曼编码算法
    hive表查询——排序
    假期总结4
  • 原文地址:https://www.cnblogs.com/DeryKong/p/15624043.html
Copyright © 2020-2023  润新知