jmeter之有依赖关系的接口处理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jmeter之有依赖关系的接口处理相关的知识,希望对你有一定的参考价值。
参考技术A 1、场景:在接口功能测试或者进行压力测试的时候,我们经常要将多个流程串联起来才能将程序整个流程测试通过,中间会出现后面接口的请求要用到前面接口的返回值的问题,下面我们登录状态校验为例,介绍一种处理此种情景的方法。2、处理方法,添加‘正则表达式提取器’,将上一个接口返回的token从返回报文中识别出来并用参数接收,然后在用到此参数作为请求参数的时候直接使用。
例:一般的应用户首先要登录,获得我登录的凭证(token),之后请求其他的资源的时候需要带上这个凭证,服务器才能识别你为合法的用户并正确的返回结果。
步骤:
1、在返回需要数据的接口后面添加正则表达式提取器
2、正确填写正则表达式提取器信息
引用名称:以后请求需要引用此变量时的变量名
正则表达式:提取你想要内容的正则表达式,小括号(.+?)表示提取,也就是说对于你想要提取的内容需要用它括起来;小括号左右两边严格填写要提取的数据左右两边,保证通过匹配左右两边的值,可以正确提取到所需要的数据。
例如有一段返回【onwhitelist","inviteCode":"80065AODJD","updateMobileTag":"1","token":"97c54f8e-b83f-42cf-a326-9cea201754f5","accessToken":"97c54f8e-b83f-42cf-a326-9cea201754f5"】,想要提取token的值97c54f8e-b83f-42cf-a326-9cea201754f5,正则表达式的写法就是 "token":"(.+?)",
模板:使用提取到的第几个值。因为可能有多个值匹配,所以要使用模板。从1开始匹配,依次类推。这里 只有一个,所以填写 $1$ 即可;
匹配数字表示如何取值。0代表随机取值,1 代表全部取值。这里只有一个,填 1 即可;
缺省值表示参数没有取到值的话,默认给它的值。一般不填。
3、添加Debug Sampler,运行后来检查取值是否正确(Sampler--Debug Sampler)
4、在后续接口中使用提取到的信息,实现预想功能
至此处理完成。
Jmeter之BeansShell之处理逻辑关系
前言
需求:
1、调用商品接口获取sku信息
2、判断库存,如果库存大于500,调用buy接口购买10个商品,否则购买1个商品
一:添加商品http请求,参数id的值调用函数助手进行参数化
二:添加后置处理器-JSON提取器或正则表达式提取器(这里使用JSON提取器)提取商品接口返回结果stock的动态值,保存的变量名为myStock
三:添加购买http请求,写入正确的接口地址和参数,添加后置处理器-BeanShell PreProcessor,写入以下代码
// 获取json提取器保存下来的Stock值 String myStock = vars.get("myStock"); // 转换为int int iStock = Integer.parseInt(myStock); // 判断库存 if (iStock > 500){ // 如果>500,定义一个变量buyNum=10 vars.put("buyNum","10"); }else{ //否则变量buyNum=1 vars.put("buyNum","1"); }
四:因为定义变量为buyNum,所以购买接口的参数num的值为${buyNum}
五:因为商品接口的返回结果stock的值是动态的,所以要线程组属性需要设置多次循环,方面更好的看到效果,这里设置了10次循环
最后,添加后置处理器-Debug sampler 和察看结果树,点击运行,可以看到结果:当myStock>500时,buyNum=10,也就是库存大于500,购买10个商品;
当myStock<500时,buyNum=1,也就是库存小于500,就购买1个商品
以上是关于jmeter之有依赖关系的接口处理的主要内容,如果未能解决你的问题,请参考以下文章