JMeter BeanShell - 循环值

pla*_*irt 1 loops jmeter beanshell

我尝试使用数组中的变量Path作为HTTP Request. Path应该是这样的:mypath/${act_value}

String[] numbers = mylist.split(",");
String act_value;

for (int i = 1; i <= 25; i++) {
    vars.put(numbers[i], act_value);
}
Run Code Online (Sandbox Code Playgroud)

mylist作为提取器的输出给出,逗号分隔的字符串:mylist=123,456,343,909

HTTP Requeststate 无法访问此变量,我收到错误:

java.net.URISyntaxException:路径中存在非法字符

Dmi*_*i T 5

  1. 将您的代码修改为:

    String myList = "123,456,343,909";
    String[] numbers = myList.split(",");
    for (int i = 0; i < numbers.length; i++) {
        vars.put("number_" + i, numbers[i]);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在该脚本后面的某个位置添加ForEach 控制器并按如下方式配置它:

    • 输入变量前缀:number
    • 输出变量名称:act_value
  3. HTTP 请求采样器作为 ForEach 控制器的子级

    您的 HTTP 请求将为中的每个值执行myList

    JMeter 迭代变量


还可以考虑切换到JSR223 测试元素Groovy 语言,在大多数情况下,有效的 Beanshell 代码将是有效的 Groovy 代码,但性能会高得多。

  • 亲爱的`plaidshit`,我的心灵感应能力不足以猜测你是如何获取变量的,如果它来自提取器,那么将第一行更改为类似`String myList = vars.get("myList");` (3认同)