如何使用JSON提取器提取的多个值中的每个请求使用一个值

时间:2019-05-21 19:25:05

标签: json jmeter

使用JSON提取器,从响应正文中提取多个值。 调试采样器->例如显示这3个值 ID_1=212 ID_2=211 ID_3=225

如何在下一个HTTP Post Request中使用它们?喜欢如何为每次运行使用一个值?

POST请求正文 {"id"={$ID}} -> doesn't work.

但是,{"id"={$ID_1}}, {"id"={$ID_2}}, {"id"={$ID_3}}可以单独使用。我想避免每次手动更改POST正文请求。

2 个答案:

答案 0 :(得分:0)

在JSON提取器之后(与第一个请求的子项处于同一级别),然后在代码区域中添加以下代码,立即添加BeanShell PostProcessor

int matchNr = Integer.parseInt(vars.get("ID_matchNr"));// ID is the reference name of your JSON Extractor

String ID = "";
for(int i = 1; i <= matchNr; i++){
    if(i == 1){
     ID = "{\"id\"=" + vars.get("ID_" + i) + "}, ";
    }

    else if(i == matchNr){
     ID = ID + "{\"id\"=" + vars.get("ID_" + i) + "}";
    }

    else{
         ID = ID + "{\"id\"=" + vars.get("ID_" + i) + "}, ";
    }

    vars.put("IDs", ID);
}

现在在您的POST请求正文中使用变量${IDs},该值将类似于{"id"=1}, {"id"=2}, {"id"=3}, {"id"=4}

答案 1 :(得分:0)

您可以根据需要为每个循环使用。检查jmeter ForEach Controller。 ForEach的第一个示例jmx可以满足您的要求。  在reqEx下面提取所有内容。然后forEach将所有regEx输入为“ inputVar”中的输入,并使用returnVar获取它。将returnVar传递给您的下一个HTTP 2请求。 enter image description here

希望这会有所帮助。