Jmeter关联方式使用

什么是关联

关联是Jmeter工具中非常重要的一个技术。因为在测试过程过有些数据是经常发生变化的,要获取并使用这些数据,就要使用关联。 

比如: 用户登录后,session信息都不同,有些操作要使用session,就需要将这个动态的信息保存下来。 

还有经常遇到的场景,第二个请求提交的参数要从第一个请求的返回数据中获取。

使用方法

1.新建两个方法,一个叫getCode,一个叫getMessage getCode永久返回1 然后根据返回的code请求getMessage方法,如果请求code为1返回true,反之返回false

@Controller
public class AliPayController {


	@RequestMapping("getCode")
	@ResponseBody
	public String getCode(){
		return "{\"name\":\"李四\",\"code\":\"1\"}";
	}


	@RequestMapping("getMessage")
	@ResponseBody
	public String getMessage(String code,HttpServletRequest request){


		if("1".equals(code)&&"李四".equals(name)){
			return "true";
		}else{
			return "false";
		}
	}	
}
2.新建一个简单控制器,在简单控制器中添加两个http请求

3.第一个Http请求操作

我们需要在第一个Http Requst 中也就是getCode中新建一个正则表达式,把Response的值提取到变量中,提供给别的Http Request 使用


引用名称:其他地方引用时的变量名称,引用方法:${引用名称}

正则表达式
                  ():括起来的部分就是要提取的。
                  .匹配任何字符串。
                  *出现任意次数。
                  ?不要太贪婪,在找到第一个匹配项后停止。
模板
                  表示使用提取到的第几个值:
                  $-1$:表示取所有值
                  $0$:表示取随机值
                  $1$:表示取第一个值
                  $2$:表示取第二个值
依次类推:$n$:表示取第n个值,这里不要对上面匹配的参数个数混淆,比如说正则匹配到两个 "name":"张三","name":"李四"  使用$1$来获取第一个name=张三,使用$2$来获取第二个name=李四,而不是说$2$拿到的是code=1这个值。
匹配数字:匹配数字:0 代表随机取值,1 代表全部取值

缺省值:如果正则表达式没有搜找到值,则使用此缺省值


给第一个http请求添加一个断言器


${code_g1}代表取正则表达式匹配的第一个参数 也就是name值,${code_g2}代表取正则表达式匹配的第二个参数,也就是code值


给第一个http请求添加断言结果,查看取值是否成功


4.第二个http请求操作

只需要添加一个图形结果和查看结果树就可以了,然后在参数的地方使用下面这种方式使用参数


5.测试
最后执行整个简单控制器,查看getMessage响应结果,证明有使用getCode函数的返回值

JMeter中,关联token是指在一个请求的执行中,需要使用另一个请求中获取到的token作为前提条件。通过关联token,可以避免在每个接口请求中都去数据库校验token,提高效率。 具体实现关联token的方法有多种。其中一种常用的方使用正则表达提取器或JSON提取器来提取token,并将其存放在一个变量中。然后,在后续的请求中,可以将该变量的值作为请求或cookies中的token。 举个例子,假设我们有一个登录接口需要生成token,我们可以使用正则表达或JSON提取器来提取生成的token,并将其存放在一个变量中。然后,在其他接口发送请求时,在请求中带上该token。这样,在每个接口请求中都可以使用该token进行权限校验。 另外,还有一种跨线程组获取变量的方,可以使用BeanShell后置处理程序来将局部变量转为全局变量。通过设置全局变量,可以在不同的线程组中获取使用token。 总结起来,关联token的步骤包括获取token值和在下一个请求中使用token值。获取token值可以使用正则表达提取器或JSON提取器,将token存放在一个变量中。在下一个请求中,可以将该变量的值作为请求或cookies中的token。另外,还可以使用BeanShell后置处理程序将局部变量转为全局变量,以实现跨线程组获取token的目的。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [JMeter关联技术_获取token给下一个请求使用、跨线程组、用MD5函数给密码加盐的脚本开发](https://blog.csdn.net/weixin_44801980/article/details/125752079)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [JMeter-关联获取token的值](https://blog.csdn.net/qq_40468470/article/details/117325563)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值