jmeter中每个线程和循环的2个字段的增量时间值

Increment time value for 2 fields for every Thread and loop in jmeter

我必须安排一次会议,特别是 post 我必须不时提供的请求正文数据。每次从和到时间都不同,时间不应重叠。

为了这个要求,我使用 JSR223 Sampler 尝试了下面的代码,但我在这里面临的问题是,对于每个线程和循环,只有一次递增。值是相同的,但不是递增。每个线程的时间值都应该递增。请让我知道我是如何实现它的,因为下面的代码为每个 Thread

返回相同的值
def now = new Date()
log.info('Before: ' + now.format('HH:mm'))
use(groovy.time.TimeCategory) {
    def nowPlus60Mins = now + 60.minutes
    def nowPlus15Mins = nowPlus60Mins + 15.minutes
    log.info('After: ' + nowPlus60Mins.format('HH:mm'))
    log.info('End: ' + nowPlus15Mins.format('HH:mm'))
vars.put("AfterTime",nowPlus60Mins.format('HH:mm'));
vars.put("EndTime",nowPlus15Mins.format('HH:mm'));

如果您想影响所有线程,您必须使用 JMeter 属性,在脚本中表示为 props:

props.put("AfterTime",nowPlus60Mins.format('HH:mm'));
props.put("EndTime",nowPlus15Mins.format('HH:mm'));

使用 __P 函数作为 ${__P(AfterTime,)}

在 JSR223 采样器外部获取 属性 值

在 JSR223 中得到 属性 和 props.get("EndTime")

如果您在 1 分钟内 运行 进行了超过 1 次迭代 - 绝对期望您将获得相同的生成偏移量,因为给定您的 SimpleDateFormat 设置值将每分钟更新一次。

此外,您不需要任何脚本,您可以直接在请求正文中使用 __timeShift() function 实现相同的目的:

  • 加上 60 分钟:${__timeShift(HH:mm,,PT60M,,)}
  • 加 15 分钟:${__timeShift(HH:mm,,PT15M,,)}

更多信息:Creating Dates in JMeter Using the TimeShift Function