如何在 JMeter 中以编程方式向 Http 请求添加参数

How to add parameters to a HttpRequest programatically in JMeter

我现在在我们的产品性能测试中使用JMeter。

我有下面的性能测试场景:

  1. 从请求A中提取1000个唯一ID。
  2. 将这 1000 个唯一 ID 作为“表单参数”添加到下一个请求 B。检查请求 B 响应时间。

请求B是这样的:

方法:Post

URL: http://www.aaa.com/abc/def

表单参数:

para1 : 值 1

para2 : 值 2

ID : ID1

ID : ID2

ID : ID3

......

ID : ID1000

我知道这个请求不是 http 请求的规范用法。但它在我们的产品中使用多年。

现在我在“正则表达式提取器”的帮助下从请求 A 中获取了 1000 个唯一 ID,

我的问题是: 如何将变量传递给请求B,并将1000个ID设置为请求B的“表单参数”?

  1. 在需要添加1000个参数的地方添加JSR223 PreProcessor as a child of the HTTP Request采样器

  2. 将以下代码放入“脚本”区域:

    def data = new org.apache.jmeter.config.Arguments()
    1.upto(vars.get('ID_matchNr') as int, index -> {
        def parameter = new org.apache.jmeter.protocol.http.util.HTTPArgument('ID', vars.get('ID_' + index))
        data.addArgument(parameter)
    })
    sampler.setArguments(data)
    
  3. 就是这样,JSR223 PreProcessor会读取所有以ID_1开头,以ID_XXXX结尾的JMeter Variables,并在HTTP Request中添加相应的参数取样器

有关 JMeter 上下文中 Groovy 脚本的更多信息:Apache Groovy - Why and How You Should Use It