将Jmeter结果保存到csv的正确方法 - 如何最终确定结果文件

时间:2017-01-18 12:37:48

标签: jmeter

我执行的操作与其他主题中已经描述过的情况不同:我正在尝试将cmeter结果从csv文件保存到数据库。

我有一个Aggregate Report监听器,可以将结果保存到csv文件,这里一切正常。 我还在我的场景中添加了TearDown Thread Group,它从这个csv文件中获取字符串(通过CSV DataSet配置)并将其处理到数据库。此部分也适用于静态CSV。

这里有两个问题:

  1. 聚合报表侦听器添加在场景的顶级。因此,它还将TearDown组中的所有采样器添加到结果文件中。所以,它就像一个递归:如果我直到结果文件结束,我将永远不会到达终点,因为每次新迭代都会添加一些新行。
  2. 当CSV数据集配置采用csv文件时,它仍然只在内存中,而不是最终确定为磁盘。所以,文件只是空的。如何告诉Jmeter它应该将内存从内存写入文件并关闭输入流?
  3. 任何想法如何解决?

    我知道我可以将Listener移动到线程中,但在这种情况下,我必须为每个线程组复制它。在一个地方拥有一个监听器总是更好,因为我可以改变它的设置。

    提前致谢。

1 个答案:

答案 0 :(得分:2)

有一个JMeter属性 jmeter.save.saveservice.autoflush 默认为 false

# AutoFlush on each line written in XML or CSV output
# Setting this to true will result in less test results data loss in case of Crash
# but with impact on performances, particularly for intensive tests (low or no pauses)
# Since JMeter 2.10, this is false by default
#jmeter.save.saveservice.autoflush=false

您可以通过将其设置为 true 来修改其值,以便JMeter将每行结果写入文件并在完成后关闭文件。可以在2 ways中完成:

  1. Permanent:将以下行添加到 user.properties 文件(位于JMeter的“bin”文件夹中)

    jmeter.save.saveservice.autoflush=true
    

    您需要重新启动JMeter才能选择更改

  2. Ad-hoc:通过-J command-line argument

    传递该属性
    jmeter -Jjmeter.save.saveservice.autoflush=true -n -t .....