我想在JMeter的同一个事务控制器中的foreach控制器中使用if控制器

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

我有2个get api,我用json提取器从其中提取了一个变量,从一个api中提取了标题,从其他类似的api中提取了标题。
第一个API的标题值为:{苹果,菠萝,蓝莓,樱桃}
第二个API的标题值为:{苹果,蓝莓,樱桃,菠萝,猕猴桃}
我想用if控制器检查一个条件,只有当title和title和title都相同时,它才应该移动到下一个控制器做进一步的操作。这if控制器在foreach控制器内。
因此在if控制器中,我使用了如下条件:
所有的标题)}
当我运行脚本的所有情况下,这个条件是通过,所以苹果文件夹标题也比较与樱桃和条件是成为真,并进一步进行。我只希望苹果到苹果比较通过(1对1)。
我认为title和titles值在for each控制器中没有正确提取,但我使用了正确的json提取器,因为在foreach控制器之外,我使用了bean shellAssert,并将它们进行了比较,所有值都正确提取。
json提取器使用了标题变量的详细信息:变量:标题路径:$..标题匹配号:-1选中后缀_ALL框
同样的方式也用于标题。
请帮帮我!!为什么当标题和标题是不同的值时,条件不会失败。

zpgglvta

zpgglvta1#

如果定义了以下JMeter Variables

title_ALL={apple, pineapple, blue berry, cherry}
titles_ALL={apple, blue berry, cherry, pineapple, kiwi}

则If控制器中的表达式将永远不会为真,因为值不相同。
如果你想逐一比较它们,你应该比较${title_1}${titles_1}${title_2}${titles_2},等等。
示例表达式:

${__jexl3("${title}"=="${__V(titles_${__intSum(${__jm__ForEach Controller__idx},1,)},)}",)}

您可以使用Debug Sampler and View Results Tree listener combination查看变量的当前值。
如果在匹配的情况下,您不想继续比较,而想继续进行下一次迭代或退出ForEach循环-请查看流控制操作采样器

小型演示:

相关问题