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
相关产品推荐
相关产品推荐

