JMeter 特殊组件-逻辑控制器与BeanShell PreProcessor 使用示例

文章目录

  • 前言
    • [JMeter 特殊组件-逻辑控制器与BeanShell PreProcessor 使用示例](#JMeter 特殊组件-逻辑控制器与BeanShell PreProcessor 使用示例)
      • [1. 逻辑控制器使用](#1. 逻辑控制器使用)
        • [1.1. While Controller 使用示例](#1.1. While Controller 使用示例)
        • [1.2. 如果(If)控制器 使用示例](#1.2. 如果(If)控制器 使用示例)
      • [2. BeanShell PreProcessor 使用示例](#2. BeanShell PreProcessor 使用示例)

前言

如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。

而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


JMeter 特殊组件-逻辑控制器与BeanShell PreProcessor 使用示例

1. 逻辑控制器使用

流程:

1、选择你的HTTP请求;

2、单机右键->选择插入上级

3、选择逻辑控制器

1.1. While Controller 使用示例

添加用户定义的变量:

添加变量:count

value值为循环的次数。

点击此HTTP请求右键添加后置处理器:BeanShell PostProcessor

里面写入这段代码:

java 复制代码
String count = vars.get("count");
int countInt = Integer.parseInt(count);
countInt = countInt - 1;
vars.put("count",countInt+"");

意思是:

获取count变量,每次执行完此HTTP请求后,数值-1,并存入变量count

设置While Controller内容:

go 复制代码
${__groovy(vars.get("count") !="0")}

1.2. 如果(If)控制器 使用示例

在While Controller组件上右键点击->插入上级->逻辑控制器->如果(If)控制器

在此组件上输入一下下面内容:

go 复制代码
${whileFlag}

在用户定义的变量上新加变量whileFlag:

vaue:true代表可以通过if判断、false代表拒绝通过if判断。

2. BeanShell PreProcessor 使用示例

大概流程:

首先在HTTP请求的Body Data 上设置变量,然后添加BeanShell PreProcessor,代表的是执行HTTP请求之前会先走BeanShell PreProcessor 组件,然后将传参值输入到刚刚我们在Body Data 上设置的变量,发起请求。

设置Body Data 变量:

go 复制代码
${jsonInput}

然后选择此HTTP请求组件右键->添加->前置处理器->BeanShell PreProcessor 组件

输入内容:

java 复制代码
import cn.hutool.json.JSONObject;
import java.util.ArrayList;
import java.util.List;

//==================================================================================================

// 生成随机字符串作为parentId的值
long randomParentId = ${__Random(100,500)};
String msg = "[\"12\",\"2342\"]";
log.info(msg);

// 创建一个空的 List
List inputList = new ArrayList();

// 添加字符串元素到列表中
inputList.add("value1");
inputList.add("value2");
inputList.add("value3");

// 设置JSON数据
String jsonData = "{\n" +
        "  \"pages\": {\n" +
        "    \"page\": 1,\n" +
        "    \"pageSize\": 10\n" +
        "  },\n" +
        "  \"param\": {\n" +
        "    \"isDelete\": \"string\",\n" +
        "    \"level\": \"string\",\n" +
        "    \"parentId\": \"string\",\n" +
        "    \"parentIds\": [\n" +
        "      \"string\"\n" +
        "    ],\n" +
        "    \"pkIds\": [\n" +
        "      \"string\"\n" +
        "    ]\n" +
        "  }\n" +
        "}";


// 将随机生成的parentId值替换到jsonInput中
JSONObject jsonObject = new JSONObject(jsonData);
// 替换parentIds值为随机生成的值
jsonObject.getJSONObject("parameter").put("parentIds", inputList);
jsonObject.getJSONObject("parameter").put("parentId", randomParentId);
// 将JSON数据设置为JMeter变量
vars.put("jsonInput", jsonObject.toString());

特别注意:在JMeter中,不要写关于泛型的代码,JMeter不支持泛型。

相关推荐
文人sec3 天前
性能测试-jmeter9-逻辑控制器、定时器压力并发
测试工具·jmeter·性能优化·模块测试
CesareCheung4 天前
JMeter分布式压力测试
分布式·jmeter·压力测试
测试界清流4 天前
jmeter使用技巧
jmeter
春时似衿里4 天前
jmeter配置数据库连接步骤
数据库·jmeter
新知图书4 天前
JMeter的安装部署
jmeter
程序员杰哥4 天前
什么是Jmeter? Jmeter工作原理是什么?
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·测试用例
乐神嘎嘎嘎4 天前
Jmeter测试
jmeter
卓码软件测评4 天前
第三方软件测试机构【性能测试工具用LoadRunner还是JMeter?】
java·功能测试·测试工具·jmeter·性能优化
BatyTao5 天前
Jmeter执行数据库操作
数据库·jmeter
二宝哥5 天前
性能测试工具Jmeter之java.net.BindException: Address already in use
jmeter