使用Jmeter,我运行了一个脚本,发出POST请求,在响应中接收一个对象ID,然后在后续请求中删除该对象ID。这在使用JSON提取器并执行一次脚本时有效,但我希望能够通过脚本的任意次数循环来实现这一点(例如,成功POST 40次,然后删除40次)。
最明显的解决方案似乎是将这些响应对象中的每一个推入一个数组,然后循环,但我在这样做时遇到了困难--即,在this solution之后,我不确定如何迭代该对象。试图嵌入循环控制器的索引--${ids[${__jm__Loop Controller__idx}]}
--会导致错误。
2条答案
按热度按时间cigdeys31#
如果您的JMeter Variables看起来像:
并希望使用循环控制器的内置JMeter变量
__jm__Loop Controller__idx
对其进行迭代,则需要稍微改变一下:__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
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开始添加到提取的变量中。循环后,变量将具有如下所示的值。要附加当前计数器,您可以使用以下内容作为名称。
1.接下来添加
Foreach Controller
,并添加输入变量前缀"objectId“