You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter提取job_id正则写法、数据存文件及导出xlsx格式问题

JMeter job_id提取与文件存储实现

一、适配job_id提取的代码调整

你原来的代码是从请求响应报文中提取PR开头的value值,调整为提取job_id的完整代码如下:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.FileWriter;
import java.io.BufferedWriter;

// 若从当前请求响应中提取job_id保留本行;若直接从已有JMeter变量中取,可跳过正则匹配直接遍历变量
String stringToSearch = prev.getResponseDataAsString();
// 适配job_id格式的正则,匹配job_id_序号: 后面的实际取值
Pattern p = Pattern.compile("job_id_\\d+:\\s*(.+?)(?=\\s|\\n|$)");   
Matcher match = p.matcher(stringToSearch);

// 提取所有匹配的job_id
int jobIndex = 1;
while (match.find()) {
    def value = match.group(1)
    log.info('------------------')
    log.info(value) 
    // 按序号存入JMeter变量,也可直接拼接后写入文件
    vars.put("job_id_" + jobIndex, value) 
    jobIndex++;
}

// 写入CSV示例(追加写入,每个job_id占一行)
FileWriter fileWriter = new FileWriter("C:\\Users\\Tarik\\Desktop\\example.csv",true);
BufferedWriter out = new BufferedWriter(fileWriter);
// 遍历所有job_id变量写入文件
for (int i=1; i<jobIndex; i++) {
    out.write(vars.get("job_id_" + i) + "\n");
}
out.close();
fileWriter.close();

如果job_id已经提前存储到JMeter变量中(不需要从响应提取),可以直接通过vars.getIterator()遍历所有key前缀为job_id_的变量取值,不需要走正则匹配逻辑。

二、存储为xlsx格式的实现

可以保存为xlsx格式,需要提前将对应版本的Apache POI依赖包放到JMeter的lib目录下,所需依赖包括:poi、poi-ooxml、poi-ooxml-schemas、commons-collections4、xmlbeans。
实现示例代码如下:

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFRow;
import java.io.FileOutputStream;

// 此处替换为你实际提取到的job_id总数量
int jobCount = 10;
// 创建工作簿和工作表
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("job_id列表");

// 写入表头
XSSFRow headerRow = sheet.createRow(0);
headerRow.createCell(0).setCellValue("job_id");

// 写入所有job_id
for (int i=1; i<=jobCount; i++) {
    XSSFRow row = sheet.createRow(i);
    row.createCell(0).setCellValue(vars.get("job_id_" + i));
}

// 输出到本地文件
FileOutputStream outputStream = new FileOutputStream("C:\\Users\\Tarik\\Desktop\\job_ids.xlsx");
workbook.write(outputStream);
workbook.close();
outputStream.close();

生成的xlsx文件可以直接被其他API读取调用。

内容的提问来源于stack exchange,提问作者Kshitija Patil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:12:05