JMeter如何将多请求响应数据存入同一CSV文件的后续列?
为CSV文件追加多列数据的JSR223脚本配置
你已经通过Get area请求的JSR223 Post Processor生成了含第一列area_1level的CSV文件,要给Get category和Get status请求配置脚本,将数据追加为第二、第三列,需按以下方式处理:
核心思路
由于要给已有CSV的每行添加新列数据,不能直接追加行,需先读取原CSV的所有行,将新请求返回的数据对应到每行末尾,再重新写入文件。注意:需确保三个请求返回的data数组行数一致,避免数据错位。
1. Get category请求的JSR223 Post Processor脚本
import groovy.json.JsonSlurper String folderPath = "${root_folder}/Test_Data/J1/" def csvFile = new File("${folderPath}/area_1level_alias_list.csv") // 读取原CSV的所有行 def lines = csvFile.readLines() if (lines.isEmpty()) { log.error("CSV文件为空,无法追加列") return } // 解析当前请求的JSON响应 def slurper = new JsonSlurper() def response = slurper.parseText(prev.getResponseDataAsString()) def categoryArray = response.data // 处理表头:添加第二列标题 lines[0] = lines[0] + ",category" // 处理数据行:为每行追加category字段值 for (int i = 1; i < lines.size(); i++) { if (i-1 < categoryArray.size()) { // 避免数组越界 def categoryAlias = categoryArray[i-1].alias // 假设取alias字段,和area逻辑一致,可按需调整 lines[i] = lines[i] + "," + categoryAlias } else { lines[i] = lines[i] + "," // 无对应数据时留空 } } // 将处理后的内容重新写入CSV csvFile.write(lines.join("\n"))
2. Get status请求的JSR223 Post Processor脚本
import groovy.json.JsonSlurper String folderPath = "${root_folder}/Test_Data/J1/" def csvFile = new File("${folderPath}/area_1level_alias_list.csv") // 读取原CSV的所有行 def lines = csvFile.readLines() if (lines.isEmpty()) { log.error("CSV文件为空,无法追加列") return } // 解析当前请求的JSON响应 def slurper = new JsonSlurper() def response = slurper.parseText(prev.getResponseDataAsString()) def statusArray = response.data // 处理表头:添加第三列标题 lines[0] = lines[0] + ",status" // 处理数据行:为每行追加status字段值 for (int i = 1; i < lines.size(); i++) { if (i-1 < statusArray.size()) { // 避免数组越界 def statusAlias = statusArray[i-1].alias // 假设取alias字段,可按需调整 lines[i] = lines[i] + "," + statusAlias } else { lines[i] = lines[i] + "," // 无对应数据时留空 } } // 将处理后的内容重新写入CSV csvFile.write(lines.join("\n"))
配置注意事项
- 确保三个HTTP请求的执行顺序为:
Get area→Get category→Get status,保证CSV文件先创建再依次追加列。 - 脚本中的
alias字段需根据实际JSON响应结构调整,替换为你需要提取的目标字段名。 - 若某请求返回的数据行数少于原CSV行数,对应行的新列会留空;若行数更多,超出部分的数据会被忽略。
内容的提问来源于stack exchange,提问作者user22726736
相关产品推荐
相关产品推荐

