jmeter获取上一个接口返回值的几种方法

方法一:

使用常用的正则表达式,在上一个接口下面添加正则表达式的提取器,获取你想要得到的值

但是正则表达式也会有它自己的局限性,当返回的json很复杂的时候,或则需要使用到循环或者foreach控制器的时候,经常无法满足我们场景

 

方法二:

使用后置处理器【JSON Extractor】,同样也是在上一个接口下面添加后置处理器【JSON Extractor】,获取你想要得到的值,根据上一个接口具体返回的json格式去自定义【JSON path expressions】json路径表达式

例子:需要获取faceToken字段的值

表达式的匹配规则:

$.data.content[*].similarFace[*].faceToken

同样跟正则中的规则,MATCH NUMBERS的值中-1是匹配所有的含义

方法三:

使用BeanShell Sampler来取上一个接口的返回值

例如:我现在需要取到下图红色框住的facetoken字段

首先我们先在上一个接口后面添加一个BeanShell Sampler,首先我们需要在jmeter下面的lib/ext下面将json.jar包放进去,然后重启jmeter;再到线程组中载入json.jar的包

需要使用的json.jar包下载地址:
链接:https://pan.baidu.com/s/1zjDyPbVwKqn9NeLl-QCRrQ&shfl=sharepset 
提取码:ua6o 

文中代码:

import java.util.*;
import java.lang.*;
import org.json.*;
import org.json.JSONObject;
import org.json.JSONAarry;


String response_data = prev.getResponseDataAsString();//自定义一个变量response_data,来获取请求的返回值
log.info("接口的值"+response_data);

JSONObject response = new JSONObject(response_data);//自定义一个对象response,将返回值构造JSON对象
JSONArray content = response.get("data").getJSONArray("content");//自定义一个列表list,来获取响应中data对象下的list数组
//log.info("content的内容:"+content);
JSONObject content_data = null;//创建1个空的json对象content_data,用于接收值
//log.info("content数组的长度"+content.length());
for (i = 0;i < content.length();i++){
    content_data = (JSONObject)content.getJSONObject(i);//将数组中的每一个值构造成一个对象,赋值给list_data 
    log.info("content_data的内容:"+content_data);
    JSONArray similarFace = content_data.get("similarFace");
   //log.info("similarFace的内容:"+similarFace);
    JSONObject similarFace_data = null;
   //log.info("similarFace数组的长度"+similarFace.length());
    //String[] result = new String[similarFace.length()];
    for(j = 0;j < similarFace.length();j++){
        JSONObject similarFace_data = (JSONObject)similarFace.getJSONObject(j);
       // log.info("similarFace_data的内容:"+similarFace_data);
        String faceToken = similarFace_data.get("faceToken").toString();
        //log.info("faceToken的内容:"+faceToken);
        //result[j] = faceToken;
        //log.info("result的值等于"+result);
        vars.put("faceToken_dev",faceToken);
    }
}

  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值