我想在Jmeter中使用foreach控制器执行嵌套循环

qmb5sa22  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(208)

我有两个get api来获取所有的文件夹,一个在onprem上,另一个在cloud上。(文件夹ID,文件夹标题,cld文件夹ID,cld文件夹标题),现在,我必须在onprem和cloud的另一个getapi中传递此文件夹id,这样我就可以获取文件夹中的内容,然后进行比较,以检查内容是否一样的。
因此,我使用了foreach控制器(每个用于onprem)和cloud get api来获取每个文件夹中的内容,并将它们嵌套起来,cloud forach控制器位于每个控制器的onprem内部
onprem foreach参数如下所示:
输入变量:folderid(使用json提取器提取)
起始索引:0
循环结束索引:${文件夹ID_匹配编号}
输出变量为folderidd
然后使用getapi获取相应文件夹中所有内容的id和标题(使用jsonextractor获取extractesd)。
要获取onprem上的文件夹中的内容,URL类似于:https://abc.onprem.com/${folderidd}
然后在getapi之后的每个控制器中插入云的foreach控制器
对于云,与上述相同,foreach控制器详细信息和输出ID为cld_folderidd
要获取云上文件夹中的内容,URL如下所示:https://abc.cloud.com/${cld_folderidd}
在这个http请求中,我提取了id和title,这样我就可以使用beanshellAssert来比较它们。

在执行脚本时,根据云中的所有文件夹检查onprem上的第一个文件夹,主要问题是我只想将onprem的第一个文件夹与云的第一个文件夹进行比较,将onprem的第二个云与云的第二个文件夹进行比较,或者只比较标题名称相同的文件夹。
因此,我已经插入了一个if控制器在云为每个控制器之前,获取文件夹内容请求.和if控制器的条件是这样的:文件夹标题:
在这里,我无法检查文件夹ID,因为它在云中不是固定的,将生成并分配一个随机数,这将不同于onprem文件夹ID

但这仍然是不工作,再次一个onprem文件夹正在与云上的所有文件夹进行比较,请建议我的东西,这样我就可以只检查一个文件夹的onprem与云上的一个文件夹!!

vhmi4jdf

vhmi4jdf1#

你不需要使用“嵌套的”ForEach Controller,你需要使用单个ForEach Controller。
为了获得云的相关变量,您可以使用__intSum()和__V()函数组合,即类似于:

${__V(cld_folderidd_${__intSum(${__jm__ForEach Controller__idx},1,)},)}

更多信息:Here’s What to Do to Combine Multiple JMeter Variables
另外,请注意,使用Beanshell是某种形式的性能反模式,请考虑改用JSR223 Assertion和Groovy。

相关问题