如何在ForEach控制器中使用匹配计数为-1的两个正则表达式变量值。
JMeter版本:3.1
方案: 问题列表页面>每个问题都有唯一的ID>需要单击列表页面上的每个问题,HTTP请求需要两个参数 - QuestionID和Title
对于这种情况,我可以通过使用正则表达式匹配计数设置为-1的ForEach控制器来实现一个参数(标题)。
当我有另一个QuestionID的RegExp匹配计数设置为-1时,如何在同一个ForEach控制器中使用,因为它只需要一个输入变量并将其放在一个输出变量中。以下是当前的测试计划结构。
JMeter TestPlan结构:
HTTP请求如下所示:
POST https://test.com:xx/test
POST BODY:
mode=pr&questionId=454&Title=abcde
这里我必须输入/获取questionId和Title变量值,每个标题都有唯一的questionId。
线程组
- REQ1 --Req2
--- RegEx(标题):匹配编号-1(调试采样器显示匹配计数:4) `--- RegEx(QuestionID):使用MAtch编号-1(调试采样器显示匹配计数:2)
循环控制器
--- ForEach Controller(用于标题输入变量)
----使用ForEach控制器输出变量的HTTP req
运行测试>它能够成功迭代标题变量值但是如何在ForEach控制器中使用QuestionID变量,以便HTTP请求可以同时具有两个RegExp变量。
请指导。
答案 0 :(得分:2)
您可以在ForEach循环内部使用,例如,如果它使用JMeter 4.0中引入的内部索引调用foreachController
ForEach Controller现在将其当前迭代作为变量公开 名为 jm <"元素的名称"> __ idx
问题是从0开始,而QuestionID索引从1开始,
所以你需要先增加价值 1.添加测试操作
在其下添加变量名为N的用户参数和递增1的值:
${__intSum(${__jm__foreachController__idx},1,)}
然后使用N
索引在循环内获取相关QuestionID
变量:
${__V(QuestionID_${N})}
答案 1 :(得分:1)
将Counter测试元素添加为ForEach控制器的子元素,并按如下方式对其进行配置:
使用__evalVar() function
引用生成的值,如:
${__evalVar(QuestionID_${counter})}
必要时