我尝试按如下方式计算经过时间。我在Beanshell Post Processor中添加了类似这样的代码(由StackOverflow中的另一个线程提供)。
对于sampler1
long request1 = prev.getTime();
vars.put("sampler1", String.valueOf(request1));
在采样器2中我添加了。
long request2 = prev.getTime();
vars.put("sampler2", String.valueOf(request2));
long request1 = Long.parseLong(vars.get("sampler1"));
long request2 = Long.parseLong(vars.get("sampler2"));
long delta = (request1 - request2); // calculate difference
log.info("Time difference is: " + delta + " ms");
在.csv文件中捕获相同的增量,如下所示。
FileOutputStream out = new FileOutputStream("delta.csv", true);
out.write((String.valueOf(delta)).getBytes("UTF-8"));
out.write(System.getProperty("line.separator").getBytes("UTF-8"));
out.flush();
out.close();
我确实在 CSV文件中获取单行中的值。
但我正在寻找一种方法来使用样本变量捕获这些值,并将其映射到我正在另一个CSV文件中捕获的其他样本变量。
我很感激,如果有人能提供这样做的方法。
答案 0 :(得分:3)
不使用Beanshell将变量写入另一个CSV文件,而是转而使用Sampler Variables属性。
将下一行添加到第二个PostProcessor的末尾:
<html>
{% if myname = = name %}
<input type="text" value="name" disable</input>
{%endif%}
</html>
将以下行添加到 user.properties 文件(位于JMeter的“bin”文件夹中)
vars.put("delta", String.valueOf(delta));
在下一次JMeter重启时,您将在.jtl结果文件中看到一个具有“delta”变量值的新列。
设置Sample Variables属性的另一种方法是通过-J命令行参数传递它:
sample_variables=delta
有关使用,设置和覆盖此JMeter和其他JMeter属性的更多信息,请参阅Apache JMeter Properties Customization Guide。
你也可以使用Flexible File Writer(你仍然需要样本变量)。