jmeter48:常用后置处理用法
jmeter 后置处理器
常用一、
后置处理取值access_token
${__setProperty(token,${access_token},)};
请求头中用
Bearer ${__P(token,)}
常用二、
后置处理器

// 1. 生成 1~178之间的随机整数(闭区间,仅生成1次,保证后续序号一致) import java.util.Random; Random random = new Random(); int randomCount = random.nextInt(178) + 1; // 仅1次随机,unitId和unitDescription共用该序号 // 2. 拼接动态变量名(序号一致:均使用上面生成的randomCount) String unitIdVarName = "unitId_" + randomCount; // 例如:unitId_56 String descVarName = "unitDescription_" + randomCount; // 对应:unitDescription_56(序号和unitId一致) // 3. 从 JMeter 变量中获取对应值(vars = JMeter内置变量对象) String unitIdValue = vars.get(unitIdVarName); String unitDescriptionValue = vars.get(descVarName); // 4. 处理空值(避免后续使用报错,可自定义默认值) // 处理unitId空值 if (unitIdValue == null || unitIdValue.trim().isEmpty()) { log.warn("警告:变量 " + unitIdVarName + " 未定义或值为空!"); unitIdValue = ""; // 默认空值,可改为自定义默认值(如 "0") } // 处理unitDescription空值 if (unitDescriptionValue == null || unitDescriptionValue.trim().isEmpty()) { log.warn("警告:变量 " + descVarName + " 未定义或值为空!"); unitDescriptionValue = ""; // 默认空值,可改为自定义默认值(如 "默认描述") } // 5. 存储为新变量(供后续接口/组件引用,变量名可自定义) vars.put("unitIdNum", unitIdValue); // 最终unitId变量(后续用 ${unitIdNum}) vars.put("unitDescriptionDesc", unitDescriptionValue); // 最终描述变量(后续用 ${unitDescriptionDesc}) // 6. 打印日志(方便调试,已修正原笔误) log.info("=== BeanShell 动态变量解析结果 ==="); log.info("生成的随机序号:" + randomCount); log.info("拼接的unitId变量名:" + unitIdVarName); log.info("解析后的unitId值:" + unitIdValue); log.info("拼接的unitDescription变量名:" + descVarName); log.info("解析后的unitDescription值:" + unitDescriptionValue);

常用三、
后置处理器写入文件,取userFullname,写文件
import java.io.BufferedWriter; import java.io.OutputStreamWriter; import java.io.FileOutputStream; import java.io.File; // 核心配置(仅3行,无冗余) String userFullname = vars.get("userFullname"); String filePath = "D:\\00000A00000A00000A00000A2产品资料\\=====jmeter脚本=====jmeter脚本====jmeter脚本====\\第三方测试需要的测试脚本\\用户账号1000个.txt"; String content = userFullname + "\n"; BufferedWriter writer = null; try { // 目录创建(仅首次运行执行,无性能损耗) File file = new File(filePath); if (!file.getParentFile().exists()) file.getParentFile().mkdirs(); // 性能优化:BufferedWriter缓冲写入(减少IO次数),复用核心流 writer = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(file, true), "UTF-8" ), 8192); // 缓冲区设为8KB(默认4KB,提升大文件写入效率) writer.write(content); writer.flush(); // 强制刷写(避免缓存堆积,高并发更稳定) } catch (Exception e) { log.error("写入失败:路径={},错误={}", filePath, e.getMessage()); } finally { // 关闭流(简化判断,避免资源泄露) if (writer != null) try { writer.close(); } catch (Exception e) {} }

浙公网安备 33010602011771号