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之有依赖关系的接口处理的主要内容,如果未能解决你的问题,请参考以下文章

基于代码驱动:处理有依赖关系接口

iOS处理多个网络请求的先后(依赖)关系

聊一聊Jmeter用IF控制器处理接口依赖

向依赖关系宣战[转]

Jmeter之BeansShell之处理逻辑关系

Spring04-----DI