如何在jMeter中将prev HTTP请求的值用于下一个HTTP请求?

时间:2016-01-18 06:18:45

标签: jmeter


我是jMeter的新手,我正在使用它。 我有一个由两个循环控制器组成的线程组。 在第一个循环控制器中,有一个包含正文数据的HTTP请求

{ ..., "var1": "var-${__RandomString(10,1234567890abcdefg)}", ... }

在第二个循环控制器中,还有另一个包含var1的HTTP请求,我想在这个var1中设置与第一个循环控制器中的prev var1相同的值。

我尝试过使用User Defined Variables,但它为另一个Thread Groups生成了相同的值,我想为每个Thread Group生成不同的var1值。

任何人都可以帮助我,我该怎么做才能使它有效?谢谢:))

2 个答案:

答案 0 :(得分:0)

添加后处理器 - > Http Request的正则表达式提取器,您想要获取名为var1的变量。

enter image description here

如上图所示,使用"var1": "(.+?)",作为正则表达式。 (.+?)部分定义了嘿!正则表达式提取器,请在"var1": "",之间的任何内容中获取,您可以在响应内容中找到它。因此,var-${__RandomString(10,1234567890abcdefg)}将被提取到名为Var1的变量中(因为您将Var1定义为引用名称。

然后,在要访问该变量的Http Request中,使用${Var1}以将Var1变量的值作为请求参数发送。类似下面的图片

enter image description here

请注意,循环中的最后一个值将保存在Var1中。如果你想在第一个循环中保存所有值以便在第二个循环中使用它们,那么有很多方法可以做到这一点。

您可以将配置元素中的计数器添加到第一个循环控制器,并定义例如loopCounter作为它的参考名称。使用01填充开始和增量字段。

enter image description here

然后将正则表达式更改为Var${loopCounter}

enter image description here

在下一个循环的Http请求中,您可以使用${Var1}${Var2}和...

访问这些变量

答案 1 :(得分:0)

只需将__randomString()功能更改为:

${__RandomString(10,1234567890abcdefg,var1)}

它将使用随机生成的值覆盖${var1},因此您将在两个循环控制器中获得相同的随机字符串。

Random String Demo

有关上述和其他功能的更多信息,请参阅How to Use JMeter Functions文章系列。