JMeter:如何利用运行时在多个线程组上生成的令牌

时间:2018-09-30 16:59:44

标签: multithreading jmeter runtime token

场景是我们在执行期间生成令牌,该令牌将在其他线程组中进一步使用。

赞:

在第一个线程组中,将为100个用户生成令牌。 在第二个线程组中,将有50个用户使用令牌。 在第三个线程组中,接下来的50个用户将使用令牌。

查询是: 1.我们如何保存在运行时生成的令牌? 2.如何在第二个线程组上使用前50个令牌,而在第三个线程组上使用其他50个令牌?

2 个答案:

答案 0 :(得分:1)

如果在随后的请求中需要使用由请求生成的令牌,则使用1个线程组而不是很多。

不同ThreadGroup中的线程绝对没有关系,被视为不同的用户,因此尽管您可以使用InterThreadCommunication之类的元素来做到这一点,但不要这么做。

如果您使用相同的线程组,则只需使用正确的提取器来生成变量,然后使用$ {varName}来使用它们。

答案 1 :(得分:0)

您可以通过将值转换为JMeter属性来在线程组之间传输值。根据文档:

  

属性与变量不同。变量是线程本地的; 属性是所有线程共有的,需要使用__P或__property函数进行引用。

因此,如果您需要将某些内容从一个线程组转移到另一个线程组:

  1. 使用__setProperty()函数将值转换为JMeter属性,例如:

    ${__setProperty(foo,bar,)}
    
  2. 完成后,就可以使用__P()之类的函数来访问该值了,

    ${__P(foo,)}
    

演示:

JMeter Property across thread groups

如果不同线程的值不同-您可以将上述方法与__threadNum()__counter()函数结合使用,以使用当前虚拟用户号码或下一个递增的号码作为前缀或后缀功能。