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不支持泛型。

相关推荐
少云清4 小时前
【软件测试】8_性能测试实战 _执行测试脚本
jmeter·性能测试·测试脚本执行
卓码软件测评7 小时前
【第三方高校课题软件确认测试:LoadRunner与JMeter-企业级性能测试工具选型深度对比】
测试工具·jmeter·性能优化·单元测试·测试用例
AC赳赳老秦11 小时前
R语言数据分析:DeepSeek辅助生成统计建模代码与可视化图表
开发语言·人工智能·jmeter·数据挖掘·数据分析·r语言·deepseek
老友@11 小时前
JMeter 在 Linux 环境下进行生产级性能压测的完整实战指南
java·linux·jmeter·性能优化·系统架构·压测·性能瓶颈
老友@15 小时前
JMeter 压力测试完全指南(中文界面版,超详细小白版)
jmeter·压力测试
Mr_Xuhhh18 小时前
JMeter性能测试工具核心面试复习指南
测试工具·jmeter·面试
码出钞能力2 天前
jmeter压测笔记
jmeter
网易测试开发猿2 天前
爆肝整理,性能测试-内存问题定位分析+常见业务场景bug(汇总)
软件测试·软件测试工程师·jmeter·压力测试·性能测试·负载测试·jmeter性能测试
网易测试开发猿4 天前
吐血整理,性能测试-MySQL问题定位和分析+SQL优化(详细)
软件测试·软件测试工程师·jmeter·压力测试·性能测试·负载测试·jmeter性能测试