Jmeter-如何一次从数组传递固定数量的值,直到将所有值迭代到http请求

时间:2018-07-06 14:26:46

标签: jmeter

在我的htttp请求中,我得到了一个id数组,例如:list = [1、2、3 ..... 1000] 然后对于我的下一个http请求,我希望一次传递列表10中的所有值,因此总共将有100个请求,并且每次都要从列表数组中获取10个值。我正在使用循环控制器调用http请求100次。但我不知道如何一次检索10个值,然后转到下一个10,下一个10,直到使用了所有值。 我该怎么办?

2 个答案:

答案 0 :(得分:1)

  1. 在孩子的获取请求中添加regular expression extractor
  2. 添加屏幕快照中显示的以下属性以提取List enter image description here
  3. 添加一个Beanshell采样器/ JSR223采样器,并添加以下代码。 以下代码创建了一系列变量,并将一系列10个值存储在从Final_0Final_99的变量中
  

导入java.util.Arrays

     

String complete_List = vars.get(“ List”);

     

String [] complete_List_Array = complete_List.split(“,”);

     

int i;

     

for(i = 1; i <= complete_List_Array.length; i ++)

     

{vars.put(“ List _” + i,complete_List_Array [i-1]);}

     

int j;

     

int loopcount = complete_List_Array.length / 10;

     

vars.put(“ loopcount”,Integer.toString(loopcount));

     

for(j = 0; j      

{

     

StringBuilder sb =新的StringBuilder();

     

sb.append(“ [”);

     

对于(i = j * 10 + 1; i <=(j + 1)* 10; i ++)

     

{

     

sb.append(vars.get(“ List_” + i));

     

如果(i <(j + 1)* 10)

     

sb.append(“,”);

     

}

     

sb.append(“]”);

     

vars.put(“ Final _” + j,sb.toString());

     

}

     

vars.put(“ counter”,“ 0”);

添加一个循环计数器,并将循环计数记为${loopcount},如下所示

您可以将HTTP请求添加为循环计数器的子级,并一次使用${__V(Final_${counter})}

来传递一系列1o值。

向http请求添加一个beanshell后处理器,以增加计数器 将以下代码添加到beanshell采样器中

int counter = Integer.parseInt(vars.get("counter")) +1;
vars.put("counter",Integer.toString(counter));

您可以在结果中看到它一次传递10个值的序列,并且循环将运行100次

有关beanshell的更多信息,请关注the link

enter image description here

请告诉我是否有帮助.........

答案 1 :(得分:1)

考虑到您可以使用任何提取器来使用可用的列表数组。

从数组中提取子列表并将其放入属性中。然后,在所需的位置获取属性。

在下面,我从数组中获取子列表并将其放在jmeter属性中。 enter image description here

在这里,我正在从属性中获取值。这仅用于演示,您不需要。将list放入属性后,只需在HTTP采样器中获取,如上图所示。 enter image description here

现在,要在HTTP采样器中获取它,您可以使用循环和计数器,并使用groovy来获取属性。循环进行迭代,并进行计数器递增变量mylist_x。 enter image description here

希望这会有所帮助。