groovy 在jmeter循环中提取对象,然后在后续调用中查询它们

zbsbpyhn  于 2022-11-01  发布在  其他
关注(0)|答案(2)|浏览(149)

使用Jmeter,我运行了一个脚本,发出POST请求,在响应中接收一个对象ID,然后在后续请求中删除该对象ID。这在使用JSON提取器并执行一次脚本时有效,但我希望能够通过脚本的任意次数循环来实现这一点(例如,成功POST 40次,然后删除40次)。
最明显的解决方案似乎是将这些响应对象中的每一个推入一个数组,然后循环,但我在这样做时遇到了困难--即,在this solution之后,我不确定如何迭代该对象。试图嵌入循环控制器的索引--${ids[${__jm__Loop Controller__idx}]}--会导致错误。

cigdeys3

cigdeys31#

如果您的JMeter Variables看起来像:

ids1=foo
ids2=bar
ids3=baz
etc.

并希望使用循环控制器的内置JMeter变量__jm__Loop Controller__idx对其进行迭代,则需要稍微改变一下:

  1. __jm__Loop Controller__idx变量从零开始,因此您需要将1添加到初始值,可以使用__intSum()函数完成
    1.为了获得ids+__jm__Loop Controller__idx+1的“组合”值,您需要将所有内容 Package 在__V()函数中
    完整的表达式如下:${__V(ids${__intSum(${__jm__Loop Controller__idx},1,)},)}
    更多信息:Here’s What to Do to Combine Multiple JMeter Variables
628mspwn

628mspwn2#

如果你想在一个Sampler上循环,从循环中提取一些东西,然后在一个连续的循环中使用它,最好的选择是使用一个Loop Controller和一个For Each controller

使用一个Loop Controller和一个For Each Controller

1.添加您的Loop Controller。然后我们需要计算迭代次数,从而将一个Counter配置元素添加到您的Loop Controller

1.然后添加请求,然后添加Post Processor以从响应中提取值。这里我使用JSON Extractor。我将从响应正文中提取一个属性,并将其添加到名为objectId_<CURRENT_ITR_ID>的Jmeter属性中。确保将索引从索引1开始添加到提取的变量中。循环后,变量将具有如下所示的值。

objectId_1 = 1234
objectId_2 = 5678
objectId_3 = 7856
.
.
.
objectId_40 = 56865

要附加当前计数器,您可以使用以下内容作为名称。

objectId_${counter}

1.接下来添加Foreach Controller,并添加输入变量前缀"objectId“

相关问题