如何在JMeter的JSR223监听器中将两个变量值写入CSV两列
修复CSV文件两列分存变量的问题
原代码的问题是将两个变量分别写入独立行,导致所有值都挤在CSV的同一列。要实现按变量分存两列,需将同一组的两个变量放在同一行,用CSV列分隔符(通常为逗号,)分隔后再换行。
修改后的代码如下:
import org.apache.commons.io.FileUtils import java.text.SimpleDateFormat; // 获取匹配结果总数 def resultCount = vars.get("AppObjectName_matchNr") log.warn '匹配总数:' + resultCount // 生成带时间戳的唯一文件名 String fileSuffix = new SimpleDateFormat("ddMMyyyyHHmm").format(new Date()) File f = new File("results_Kr"+fileSuffix+".csv") // 可选:写入CSV表头(方便识别列含义,不需要可删除此行) FileUtils.writeStringToFile(f, "AppObjectName,QueryName" + System.getProperty("line.separator"), true) for (int i=1; i<=resultCount.toInteger(); i++) { // 获取每组对应的两个变量值 def records = vars.get("AppObjectName_" + i) def query = vars.get("QueryName_" + i) // 将两个变量用逗号拼接为同一行,写入文件 String line = "${records},${query}" + System.getProperty("line.separator") FileUtils.writeStringToFile(f, line, true) }
关键修改说明:
- 合并原代码中两次独立的文件写入操作,将
records和query拼接为同一行内容后写入,实现两列分隔。 - 可选添加了CSV表头行,便于后续查看时识别列对应的数据含义。
- 变量名
Query改为小写query,符合Groovy代码命名规范(非强制,但更易读)。
如果变量值中包含逗号、双引号等特殊字符,建议用双引号包裹每个字段,避免CSV解析出错,修改后的行拼接代码如下:
String line = "\"${records}\",\"${query}\"" + System.getProperty("line.separator")
内容的提问来源于stack exchange,提问作者Krina Modi
相关产品推荐
相关产品推荐

