我一直在使用以下BeanShell脚本,以便在每次新运行测试计划之前删除所有输出文件
import org.apache.commons.io.FileUtils; FileUtils.cleanDirectory(new File(vars.get("OutPutFolder")));
我的测试计划包含一个使用100个用户(线程数)且循环次数为5的线程组 .
我已经尝试了几种方法来合并上述的beanshell脚本,但我似乎无法找到合适的位置 .
我已经尝试过的事情:
- 创建新的“安装线程组”(“连续运行线程组”已选中)
并将脚本放在beanshell示例中>文件确实被删除但结果文件不会持久保存到磁盘(由我的脚本重新删除)
并将脚本放在beanchsell PreProcessor中>文件不会被删除
-
在我的主线程组中放置脚本>文件确实被删除但是结果文件没有持久保存到磁盘(由我的脚本重新删除)
-
使用If控制器(
${__BeanShell(vars.getIteration() == 1)} && ${__threadNum} == 1
)
1 回答
没有解决您的问题,但根据您的评论,这是一个不同的简单解决方案,它使您能够将当前测试结果与以前的测试结果分开 .
JMeter中的所有侦听器都可以接受动态文件路径,并且它们可以使用的动态值之一是
TESTSTART.MS
属性(请参阅here),这对于每个测试执行都是不同的 .因此,为了使运行的每个输出文件(或报告)的名称唯一,您可以在输出文件的名称中使用该属性:
您甚至可以创建一个子文件夹,其中包含用于特定执行的输出文件集,如下所示:
这样,名称永远不会发生冲突,并且它们按执行进行分组(来自同一执行的所有文件将具有相同的时间戳,因此您可以对它们进行过滤) .
最重要的是,在linux上你可以使用logrotate压缩旧的jmeter日志(因为它们只是文本文件,它们很好地拉链)