我有4个样本:
第一个响应类似于XML:
<userId>9709262083</userId>
<name>Tom</name>
<relatedTo>9709262080</relatedTo>
<userId>9709262084</userId>
<name>John</name>
<relatedTo>9709262080</relatedTo>
<userId>9709262085</userId>
<name>Michael</name>
<relatedTo>9709262080</relatedTo>
我创建了特殊的正则表达式提取器来获取所有userId(-1作为匹配号)并正确地获取工作。
我有3个完全相同的样本,但一个参数(${USER_ID_1}
,${USER_ID_2}
和${USER_ID_3}
)只有一个差异,但我想使我的解决方案更通用,甚至可以工作如果我不知道会有多少用户响应。
对于在正则表达式提取器中找到的每个元素,如何用某种循环中的1个样本替换这3个样本(不知道确切的用户数)。
(我正在使用JMeter 3.2,可以将其提高到5.1)
更新:
另一种方式,我希望将它们用作采样器中的单个变量,而不是拆分它们。
//e.g. 3 users
"<User><userId>9709262083</userId></User> <User><userId>9709262084</userId></User> <User><userId>97092620835</userId></User>"
//e.g. 2 users
"<User><userId>9709262083</userId></User> <User><userId>9709262084</userId></User>"
理想的解决方案是创建一个临时变量,在每个变量的每个步骤中,我只需将其值添加到该变量模式中即可。
${myVariable} += "<User><userId>${userId}</userId></User>"
然后我可以使用${myVariable}
答案 0 :(得分:1)
编辑
您的新要求${myVariable} += "<User><userId>${userId}</userId></User>"
可以通过在下面的行中使用JSR223 Sampler来实现
vars.put("myVariable", vars.get("myVariable") + "<User><userId>"+ vars.get("userId") + "</userId></User>");
您应该使用ForEach controller。示例:
应定义以下变量:
inputVar_1 =温迪
inputVar_2 =查尔斯
inputVar_3 =彼得
inputVar_4 =约翰
将return变量指定为“ returnVar”时,ForEach控制器下的采样器和控制器的收集将连续执行4次
答案 1 :(得分:1)
使用ForEach_Controller实现这一目标。
实际示例如下所示:
Test Plan
看起来像这样:Regular Expression Extractor
提取用户ID For Each Controller
遍历每个值答案 2 :(得分:1)