我已经使用正则表达式测试程序在JMeter中测试了一段正则表达式,它返回了多个结果(10),这正是我所期待的。
我使用正则表达式提取器来检索值,我想将它们全部写入CSV文件。我使用的是Beanshell Post Processor,但我只知道将1个值写入文件的方法。
到目前为止我在Beanshell中的脚本:
temp = vars.get("VALUES"); // VALUES is the Reference Name in regex extractor
FileWriter fstream = new FileWriter("c:\\downloads\\results.txt",true);
BufferedWriter out = new BufferedWriter(fstream);
out.write(temp);
out.close();
如何将通过正则表达式找到的所有值写入文件?感谢。
答案 0 :(得分:3)
如果您要查看Debug Sampler输出,您会看到VALUES
将成为前缀。
像
等。
您可以使用ForEach Controller来迭代它们。
如果您想继续Beanshell - 您需要遍历所有变量,例如:
import java.io.FileOutputStream;
import java.util.Map;
import java.util.Set;
FileOutputStream out = new FileOutputStream("c:\\downloads\\results.txt", true);
String newline = System.getProperty("line.separator");
Set variables = vars.entrySet();
for (Map.Entry entry : variables) {
if (entry.getKey().startsWith("VALUES")) {
out.write(entry.getValue().toString().getBytes("UTF-8"));
out.write(newline.getBytes("UTF-8"));
out.flush();
}
}
out.close();
答案 1 :(得分:2)
要将values数组的内容写入文件,以下代码应该可以使用(未经测试):
String[] values = vars.get("VALUES");
FileWriter fstream = new FileWriter("c:\\downloads\\results.txt", true);
BufferedWriter out = new BufferedWriter(fstream);
for(int i = 0; i < values.length; i++)
{
out.write(values[i]);
out.newLine();
out.flush();
}
out.close();