Jmeter 包含的控制器中的Set变量在调用它的线程组中不可见

Jmeter 包含的控制器中的Set变量在调用它的线程组中不可见,jmeter,Jmeter,我有以下设置 login.jmx ... - Thread Group - Transaction Controller - Http Sampler -Regex extractor (sets variable test) other.jmx -Thread Group - Transaction Controller - Include Controller (login.jmx) - Http sampler - Header u

我有以下设置

login.jmx
...
- Thread Group
  - Transaction Controller
    - Http Sampler
      -Regex extractor (sets variable test)

other.jmx
-Thread Group
  - Transaction Controller
    - Include Controller (login.jmx)
    - Http sampler
      - Header using the test variable
问题出在other.jmx事务控制器变量test未设置的内部。如果我将登录线程组复制到另一个测试计划中,它就可以正常工作


使用include controller时如何设置变量。

在我的情况下,我浏览了这一行

include控制器设计为使用外部jmx文件。要使用它,请在测试计划下面创建一个测试片段,并在其下面添加任何所需的采样器、控制器等

一旦我在我的测试计划中添加了测试片段下的所有内容,一切都正常了


在我的情况下,我浏览了这一行

include控制器设计为使用外部jmx文件。要使用它,请在测试计划下面创建一个测试片段,并在其下面添加任何所需的采样器、控制器等

一旦我在我的测试计划中添加了测试片段下的所有内容,一切都正常了

根据文件:

属性与变量不同变量是线程的局部变量;属性对于所有线程都是公共的,需要使用_P或_属性函数来引用

所以我不认为您可以在另一个线程组的一个线程组中使用定义的JMeter变量,因为JMeter变量的范围仅限于当前线程,因此它只能对当前线程组中的当前虚拟用户可见

因此,如果需要在线程组之间传递变量,则需要首先通过以下方式将其转换为JMeter属性:

  • 要设置属性:
    ${\uuu setProperty(foo,bar,)}
  • 要获取属性:
    ${{uu P(foo,)}
如果希望属性是特定于线程的,即每个虚拟用户都有自己的值,则可以添加_threadNum函数作为前缀或后缀:

  • ${{uuuu setProperty(foo{{uuuu threadNum},bar,)}
  • ${{uu p(foo{{uu threadNum},)}

更多信息:

根据文档:

属性与变量不同变量是线程的局部变量;属性对于所有线程都是公共的,需要使用_P或_属性函数来引用

所以我不认为您可以在另一个线程组的一个线程组中使用定义的JMeter变量,因为JMeter变量的范围仅限于当前线程,因此它只能对当前线程组中的当前虚拟用户可见

因此,如果需要在线程组之间传递变量,则需要首先通过以下方式将其转换为JMeter属性:

  • 要设置属性:
    ${\uuu setProperty(foo,bar,)}
  • 要获取属性:
    ${{uu P(foo,)}
如果希望属性是特定于线程的,即每个虚拟用户都有自己的值,则可以添加_threadNum函数作为前缀或后缀:

  • ${{uuuu setProperty(foo{{uuuu threadNum},bar,)}
  • ${{uu p(foo{{uu threadNum},)}


更多信息:

请看我的答案,这是真实的答案,我从来没有说过我对基于线程的变量有问题。问题是除非您使用测试片段,否则它不会正常工作。另外请注意:JMeter将忽略使用Include Controller导入的线程组设置(但将读取其内容)。因此父JMX和包含的JMX将在一个线程组中。来自JMeter手册:为了方便起见,还可以在外部JMX文件中添加一个线程组以进行调试。。。在include过程中,线程组将被忽略。请看我的答案,它是真实的,我从来没有说过我对基于线程的变量有问题。问题是除非您使用测试片段,否则它不会正常工作。另外请注意:JMeter将忽略使用Include Controller导入的线程组设置(但将读取其内容)。因此父JMX和包含的JMX将在一个线程组中。来自JMeter手册:为了方便起见,还可以在外部JMX文件中添加一个线程组以进行调试。。。在包含过程中将忽略线程组。请接受您自己的答案(帮助其他访问者搜索类似案例,如我…)请接受您自己的答案(帮助其他访问者搜索类似案例,如我…)