在JMeter中每个线程循环运行一次预处理器

在JMeter中每个线程循环运行一次预处理器,jmeter,Jmeter,如果我将JSR223预处理器与以下代码一起使用: log.info("" + ${rand}); 当${rand}是一个随机变量时,如何在每次循环此线程时更改此变量 更改线程的数量确实会使变量在每次运行时都发生更改,而对于循环,它只接受一个值,并为所有其他循环保留该值 将其放在JSR223采样器中得到相同的结果。我基本上希望代码作为用户参数 您需要使用vars来避免获取缓存的/相同的值 vars.get("rand") 看 脚本不使用任何使用${va

如果我将JSR223预处理器与以下代码一起使用:

log.info("" + ${rand});
${rand}
是一个随机变量时,如何在每次循环此线程时更改此变量

更改线程的数量确实会使变量在每次运行时都发生更改,而对于循环,它只接受一个值,并为所有其他循环保留该值

将其放在JSR223采样器中得到相同的结果。我基本上希望代码作为用户参数


您需要使用vars来避免获取缓存的/相同的值

 vars.get("rand")

脚本不使用任何使用
${varName}
的变量,因为缓存将只获取
${varName
的第一个值。请使用
vars.get(“varName”)

不要内联JSR223测试元素,因为:

  • 它们可能会导致编译失败

  • 语法与Groovy的特性冲突

  • 如果您勾选第一次出现的代码将被缓存并在后续迭代中使用,如果您不勾选,那么您将失去Groovy的性能优势

    使用此功能时,请确保脚本代码不直接在脚本代码中使用JMeter变量或JMeter函数调用,因为缓存只会缓存第一次替换。请使用脚本参数

  • 因此:

    • ${rand}
      变量移动到“Parameters”部分,并将代码更改为

       log.info("" + Parameters);
      

    • 或者使用,在这种情况下,更改代码如下:

       log.info("" + vars.get("rand"));