如何在 Jmeter 中使用后处理器设置变量值并在预处理器中用于同一采样器?

问题描述 投票:0回答:3

我的场景是经过不同的时间(15 分钟间隔),直到脚本为每个采样器运行运行。 我在同一步骤中使用预处理器和后处理器,现在我想在后处理器步骤中使用在后处理器步骤中更改的变量。 下面是代码和脚本的截图。

groovy jmeter load-testing
3个回答
1
投票
  1. 根据 JMeter 测试元素执行顺序 PreProcessor 在 PostProcessor 之前执行,因此您无法在 PreProcessor 中访问 PostProcessor 中设置的变量
  2. __timeShift() 函数,它可以生成具有给定偏移量的给定格式的日期,例如,您可以在当前时间上添加 15 分钟,简单如下:

    ${__timeShift(yyyy-MM-dd'T'HH:mm:ss.SSS'Z',,PT15M,,)}
    
  3. Groovy 中不需要使用这些 SimpleDateFormat/Calendar,有 TimeCategory 类使得日期操作变得非常容易。此外,Groovy 的 Date 类提供了 format() 函数,因此您可以在当前日期上添加 15 分钟,例如:

    use(groovy.time.TimeCategory) {
        15.minutes.from.now.format("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
    }
    

演示:


0
投票

刚刚找到解决方案。我不需要在这里添加预处理器。相反,仅使用 jsr223 采样器就可以与 Onceonly 控制器一起正常工作。 预处理器正在此处重置开始时间和结束时间值。


0
投票

就像上面提到的 vars.put("","") 从后期到预处理器都不起作用。有一种方法可以使用 BeanShell 使用 Jmeter 中的属性将值从后置处理器发送到预处理器

后期处理内部

props.put("property_name", extractedValue);

在预处理器中

String value = props.getProperty("pageNumber");
if (value != null) {
  vars.put("my_variable", String.valueOf(retrievedValue));
}
© www.soinside.com 2019 - 2024. All rights reserved.