jmeter - 在运行新的测试计划之前清理以前保存的文件

时间:2016-05-18 12:43:35

标签: jmeter

我一直在使用以下BeanShell脚本,以便在每次新运行的测试计划之前删除所有输出文件

import org.apache.commons.io.FileUtils; FileUtils.cleanDirectory(new File(vars.get("OutPutFolder")));

我的测试计划包含一个使用100个用户(线程数)且循环次数为5的线程组。

我已经尝试了几种方法来合并上述的beanshell脚本,但我似乎无法找到合适的位置。

我已经尝试过的事情:

  • 创建一个新的"设置线程组" ("连续运行线程组"被选中)

    并将脚本放在beanshell示例中>文件确实被删除但结果文件没有持久保存到磁盘(由我的脚本重新删除)

    并将脚本放在beanchsell PreProcessor中>文件不会被删除

  • 在我的主线程组中放置脚本>文件确实被删除但结果文件没有保存到磁盘(由我的脚本重新删除)

  • 使用If Controller(${__BeanShell(vars.getIteration() == 1)} && ${__threadNum} == 1

1 个答案:

答案 0 :(得分:3)

没有解决您的问题,但根据您的评论,这是一个不同的简单解决方案,它使您能够将当前测试结果与以前的测试结果分开。

JMeter中的所有侦听器都可以接受动态文件路径,并且它们可以使用的动态值之一是TESTSTART.MS属性(请参阅here),这对于每个测试执行都是不同的。< / p>

因此,为了使每个输出文件(或报告)的名称对于运行唯一,您可以在输出文件的名称中使用该属性:

your/path/${TESTSTART.MS}_errors.csv

您甚至可以创建一个包含特定执行输出文件集的子文件夹,如下所示:

your/path/${TESTSTART.MS}/name1.ext
your/path/${TESTSTART.MS}/name2.ext

这样名称永远不会发生冲突,并且它们按执行进行分组(来自同一执行的所有文件都具有相同的时间戳,因此您可以对它们进行过滤)。

最重要的是,在Linux上你可以使用logrotate压缩旧的jmeter日志(因为它们只是文本文件,它们很好地拉链)