如何在用户定义的变量配置中使用提取器中声明的JMeter变量

如何在用户定义的变量配置中使用提取器中声明的JMeter变量,jmeter,Jmeter,我有一个http请求,它使用提取器从主体设置JMeter变量(我们称之为test)。当我查看调试控制器时,我可以看到它工作得很好。接下来,我想在变量的开头添加一些内容,因此我添加了一个用户定义的变量节点,并添加了一个名为new的变量,然后将值设置为${test}。但是,当我查看调试响应时,我看到的是${test},而不是值 我在两个不同的UDV节点中尝试了同样的方法手动设置值,效果很好,那么如何将其附加到提取器中声明的JMeter变量中呢?UDV不能以动态方式使用,因为它们在测试开始时只处理一次

我有一个http请求,它使用提取器从主体设置JMeter变量(我们称之为
test
)。当我查看调试控制器时,我可以看到它工作得很好。接下来,我想在变量的开头添加一些内容,因此我添加了一个用户定义的变量节点,并添加了一个名为
new
的变量,然后将值设置为
${test}
。但是,当我查看调试响应时,我看到的是
${test}
,而不是值


我在两个不同的UDV节点中尝试了同样的方法手动设置值,效果很好,那么如何将其附加到提取器中声明的JMeter变量中呢?

UDV不能以动态方式使用,因为它们在测试开始时只处理一次

不要使用UDV,使用JSR223采样器(或后处理器)和
vars

 vars.put("new", "prefix"+ vars.get("test"))

另一种选择是使用插件,UDV不能动态使用,因为它们在测试开始时只处理一次

不要使用UDV,使用JSR223采样器(或后处理器)和
vars

 vars.put("new", "prefix"+ vars.get("test"))
另一种选择是根据以下要求使用插件:

用户定义变量元素允许您定义一组初始变量,就像在测试计划中一样

请注意,测试计划中的所有UDV元素-无论它们在哪里-都在开始时处理

因此,用户定义的变量元素将只被读取一次,并且仅在测试计划启动时读取

如果您需要用新值覆盖当前变量,您可以使用如下语法:

${__groovy(vars.put('foo'\, 'some_prefix_' + vars.get('foo')),)}
演示:

vars
是JMeterVariables类实例的缩写,它提供对当前线程范围内所有对象的读写访问。查看了解在JMeter测试中使用Groovy脚本还可以做些什么,请参见:

用户定义变量元素允许您定义一组初始变量,就像在测试计划中一样

请注意,测试计划中的所有UDV元素-无论它们在哪里-都在开始时处理

因此,用户定义的变量元素将只被读取一次,并且仅在测试计划启动时读取

如果您需要用新值覆盖当前变量,您可以使用如下语法:

${__groovy(vars.put('foo'\, 'some_prefix_' + vars.get('foo')),)}
演示:


vars
是JMeterVariables类实例的缩写,它提供对当前线程范围内所有对象的读写访问。查看以了解在JMeter测试中使用Groovy脚本还可以做些什么,这是否意味着它实际上不受支持?这就是我学习的方式。@JGleason UDV仅在开始时是进程,您也可以检查,这是否意味着它实际上不受支持?这就是我学习的方式。@JGleason UDV仅在开始时是进程,您也可以检查