Jmeter源码实现多请求关联压测

在做性能测试的时候,经常会涉及多接口的场景,接口1的返回值要作为接口2的请求数据。最典型的,我们需要登录成功后(接口1)返回的鉴权信息,作为接口2的输入。

要实现这种需求,有多种方式,比如构造cookie,HTTP头等;今天,我们来探讨下通过Jmeter源代码来实现这种需求。

【环境搭建】

如果你还没有搭建好Jmeter开发环境,可以参考:

Jmeter源码改造之-定制Jmeter菜单-CSDN博客

【实现功能概述】

假设请求和响应均为Json格式的接口(如果不是Json,可以类比使用正则表达式等方式实现)。将接口1的返回的某个参数,作为接口2的请求参数;既可以放到接口2请求头,也可以放到接口2的请求体中。

【核心代码】

我们通过Jmeter的后置处理器-Json提取器来实现,将接口1返回的某个参数放入到变量中,供后面接口调用。

1.新建Json提取器,并设置名称:

JSONPostProcessor jsonPostProcessor = new JSONPostProcessor();
jsonPostProcessor.setName("Json提取器-xxx");

2.设置变量名,此处注意:对于setPropertyString nameString value)函数,如果不知道name怎么取,可以从jmx脚本文件中获得答案,如下图。不管是设置变量名还是其他属性,都可用这种方式。

jsonPostProcessor.setProperty("JSONPostProcessor.referenceNames","your_variableNameValue");
从JMX文件中获取参数name

3.设置表达式,注意,格式通常为$.your_response_param,如果返回有层级,则以.分隔,如$.parent.your_response_param

jsonPostProcessor.setJsonPathExpressions("$.xxx");

4.设置应用范围:

jsonPostProcessor.setScopeParent();

5.以下两行TEST_CLASS和GUI_CLASS也必须设置,否则无法正常界面显示:

jsonPostProcessor.setProperty(TestElement.TEST_CLASS, JSONPostProcessor.class.getName());
jsonPostProcessor.setProperty(TestElement.GUI_CLASS, JSONPostProcessorGui.class.getName());

6.根据需要将Json提取器加入到tree中,比如加入到某个http请求中。注意:httpTreeHashTree类型,且已addHTTPSampler。

httpTree.add(httpSampler,jsonPostProcessor);
httpTree定义

【验证结果】

注意,定义好了Json提取器和变量后,后面的请求就可以随意引用该变量了。

Json提取器的定义
Json提取器变量的引用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值