代码之家  ›  专栏  ›  技术社区  ›  Aleks

JSR223预处理器。将数据从数组传递到请求后参数

  •  0
  • Aleks  · 技术社区  · 2 年前

    有2个请求。

    在通过的第一个请求中 正则表达式提取器 我得到的数据看起来像

    VAR_1=foo
    VAR_2=bar
    VAR_3=base
    VAR_N=NNN
    VAR_matchNr=N
    

    数据存储在变量中 VAR .

    在第二个请求中,我添加了 JSR223预处理器 。我添加了以下代码:

    def array = []
    
    1.upto(vars.get('VAR_matchNr') as int, { index ->
         array.add(vars.get('VAR_' + index))
    })
    
    vars.put('array', new groovy.json.JsonBuilder(array).toPrettyString());
    

    当脚本运行时,所有内容都得到了正确处理 VAR 变量被转换为数组。

    enter image description here

    我有以下问题:

    我需要在POST请求的参数中传递接收到的数据。现在我正在通过 大堆 变量但是整个数组会同时传输,并且请求执行不正确。 enter image description here

    如何确保查询参数中的每个数组值都被写成一个单独的参数?同时,我不确定会有多少个参数,可以从0到20 enter image description here

    1 回复  |  直到 2 年前
        1
  •  0
  •   Dmitri T    2 年前

    您需要修改“您的”代码才能创建 HTTP Request 采样器参数动态变化,而不是将匹配项保存到 JMeter Variable .

    类似于:

    def arguments = sampler.getArguments()
    
    1.upto(vars.get('VAR_matchNr') as int, { index ->
         arguments.addArgument(new org.apache.jmeter.protocol.http.util.HTTPArgument("list[]", vars.get('VAR_' + index)))
    })
    
    sampler.setArguments(arguments)
    

    看见 Apache Groovy: What Is Groovy Used For? 有关JMeter中Groovy脚本的更多信息的文章