在Jmeter中附加到Groovy中的文件

时间:2014-05-12 15:04:55

标签: java jmeter

要记录测试场景的总时间,我在JSR223 PostProcessors中使用Groovy脚本来捕获脚本之前和之后的时间戳。

捕获场景开始时间戳的脚本:

def scenario_start = System.currentTimeMillis().toString();
vars.put("scenario_start", scenario_start);

当我想为一个客户附加结果时,我想使用第二个groovy脚本将结果附加到输出文件:

def scenario_end = System.currentTimeMillis().toString();
def scenario_start = vars.get("scenario_start");
def cm = vars.get("CUSTOMER_NUMBER");

log.debug("scenario_start = " + scenario_start);
log.debug("scenario_end = " + scenario_end);
log.debug("CUSTOMER_NUMBER = " + cm);

File file = new File("logs/output/scenario_times_idtv.txt").newOutputStream().withWriter { out ->
    out.append(cm + ";" + scenario_start + ";" + scenario_end);
}

实际结果是我日志中的第一行:每次都会覆盖scenario_times_idtv.txt。

我已使用out.appendout.printlnnew File("...").withWriter {...}new File("...").newOutputStream().withWriter {...}但我每次都会在日志中获得一行数据。

我无法找到如何正确地将新结果附加到日志文件中。

感谢您经验丰富的投入!

1 个答案:

答案 0 :(得分:1)

我不是非常Groovy专家,但回忆起在JMeter soap response - data analysis

回答类似问题

使用Beanshell

我想如果你改变你的代码行

File file = new File("logs/output/scenario_times_idtv.txt").newOutputStream().withWriter { out ->
out.append(cm + ";" + scenario_start + ";" + scenario_end);

类似于:

FileOutputStream file = new FileOutputStream("logs/output/scenario_times_idtv.txt", true);
file.append((cm + ";" + scenario_start + ";" + scenario_end).getBytes());
file.flush();
file.close();

您的脚本将按预期运行。注意FileOutputStream的true参数。它告诉流附加现有文件。也许有一个Groovy模拟,但这一点应该也可以。