对于多线程,同一变量值从jmeter中的一个线程传递到另一个线程

时间:2019-07-09 19:24:42

标签: jmeter beanshell

我将用户数设置为5,并且在测试计划中运行了3个线程。我的问题是,当我将变量从1个线程传递给另一个线程时,对于所有5个用户,它都传递相同的值而不是5个diff值。我正在使用Bean Shell断言将变量传递给其他线程

使用beanshell断言来传递变量

${__setProperty(name, ${name})};
${__setProperty(range, ${range})};

并在下一个线程中使用了属性函数

  "name": "${__property(name)}",
  "range": "${__property(range)}",

如果看到有效负载,则5个用户的名称和范围值始终相同:

POST数据:

{
  "name": "testA",
  "range": "range-A",
 }

预期结果是5个用户应具有差异名称

{
   "name": "testA",
   "range": "range-A",
}

{
  "name": "testB",
  "range": "range-B",
 }

{
  "name": "testC",
  "range": "range-C",
 }

1 个答案:

答案 0 :(得分:0)

-使用groovy而不是beanshell来提高性能。

-使用预处理器或后处理程序代替beanshell断言。

-假设它是5个用户和3个线程组,而不是5个用户和3个线程。

-属性和变量存在差异,如下所述:-

  

属性与变量不同。变量本地   线;属性是所有线程常用的

因此,如果将您的设置变量设置为属性,那么它将成为所有人的共同点,每个线程将获得相同的值。

要将值从第一个线程组传递到下一个线程组,还可以使用InterThread-Communication

考虑到您知道需要发送什么值,然后使用CSV Data set config。 如果要从发布请求中获取数据,请使用发布处理器来获取值并将其进一步传递。

希望这会有所帮助。