jmeter48:常用后置处理用法

jmeter 后置处理器

 

常用一、

后置处理取值access_token

${__setProperty(token,${access_token},)};

请求头中用

Bearer ${__P(token,)}

 

常用二、

后置处理器

image

 

// 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);

image

 

常用三、

后置处理器写入文件,取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) {}
}

 

posted @ 2025-12-10 13:45  自然观察家  阅读(1)  评论(0)    收藏  举报