如何在 JMeter 中以编程方式向 Http 请求添加参数
How to add parameters to a HttpRequest programatically in JMeter
我现在在我们的产品性能测试中使用JMeter。
我有下面的性能测试场景:
- 从请求A中提取1000个唯一ID。
- 将这 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的“表单参数”?
在需要添加1000个参数的地方添加JSR223 PreProcessor as a child of the HTTP Request采样器
将以下代码放入“脚本”区域:
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)
就是这样,JSR223 PreProcessor会读取所有以ID_1
开头,以ID_XXXX
结尾的JMeter Variables,并在HTTP Request中添加相应的参数取样器
有关 JMeter 上下文中 Groovy 脚本的更多信息:Apache Groovy - Why and How You Should Use It
我现在在我们的产品性能测试中使用JMeter。
我有下面的性能测试场景:
- 从请求A中提取1000个唯一ID。
- 将这 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的“表单参数”?
在需要添加1000个参数的地方添加JSR223 PreProcessor as a child of the HTTP Request采样器
将以下代码放入“脚本”区域:
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)
就是这样,JSR223 PreProcessor会读取所有以
ID_1
开头,以ID_XXXX
结尾的JMeter Variables,并在HTTP Request中添加相应的参数取样器
有关 JMeter 上下文中 Groovy 脚本的更多信息:Apache Groovy - Why and How You Should Use It