我有以下设置
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事务控制器变量测试中没有设置。如果我将Login线程组复制到另一个测试计划中,它可以正常工作。
如何在使用include控制器时设置变量。
答案 0 :(得分:3)
在我的情况下,我瞥了一眼这条线......
include控制器旨在使用外部jmx文件。要使用它,请在测试计划下创建一个测试片段,并在其下面添加任何所需的采样器,控制器等。
一旦我在测试计划中的测试片段下添加了所有内容,一切正常。
答案 1 :(得分:2)
根据JMeter Functions and Variables文档:
属性与变量不同。 变量是线程的本地;属性对所有线程都是通用的,需要使用__P或__property函数进行引用。
因此我不认为您可以在另一个线程组中的一个线程组中使用JMeter变量,因为JMeter变量的范围仅限于当前线程,因此它仅对当前线程中的当前虚拟用户可见组。
因此,如果您需要在线程组之间传递变量,则需要首先通过__setProperty() function将其转换为JMeter属性,如:
${__setProperty(foo,bar,)}
${__P(foo,)}
如果您希望该属性是特定于线程的,即每个虚拟用户都有自己的值,您可以添加__threadNum函数作为前缀或后缀:
更多信息:Knit One Pearl Two: How to Use Variables in Different Thread Groups