首页 文章

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

提问于
浏览
2

我一直在使用以下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 回答

  • 3

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

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

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

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

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

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

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

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

相关问题