美文网首页Jmeter
Jmeter-几种在响应报文中抽取数据的方法

Jmeter-几种在响应报文中抽取数据的方法

作者: 黄小呱 | 来源:发表于2016-08-14 23:36 被阅读855次

为了完成一个用例中的业务逻辑,时常需要通过在上一个请求的响应报文中抽取相关的数据,从而将其应用在下一个或以后的请求中,从而实现一系列完整的流程。

1.使用JSON Path Assertion

添加一个JSON Path Assertion:右键一个sampler→添加→断言→JSON Path Assertion

例如,请求注册的相应报文为:

Destination Variable Name中填入后续引用该响应报文中的参数值的参数名,JSONPath Expression中填入想要抽取的JSON格式的响应报文中的对应参数名,Default Value中填入当抽取失败时候的响应值。

2.使用BeanShell Post Processor

添加一个BeanShell Post Processor:添加→后置处理器→BeanShell Post Processor

通过getJSONobject获取响应报文的数据,通过getJSONArray获取列表中key=email的值,再通过内置对象vars.put将其赋给emailName参数。

从下一个请求的请求结果可以测出emailName的值是否传成功

3.利用正则表达式提取器

添加正则表达式提取器:添加→后置处理器→正则表达式处理器

引用名称为后续引用该响应报文中的参数值的参数名;正则表达式为提取内容的正则表达式;模板:用$$引用起来,如果在正则表达式中有多个提取表达式,则可以是$1$,$2$等等,表示解析到的第几个值给emailName,正则表达式的提取模式,值从1开始,值0对应的是整个匹配的表达式;匹配数字(0代表随机):0代表随机,-1代表所有;缺省值:抽取数据失败时候的响应值。

4.使用JSON Content Extractor 

添加一个JSON Content Extractor:添加→后置处理器→JSON Content Extractor

产生的变量名称:后续引用该响应报文中的参数值的参数名;JSON数组路径描述:$.email表示在JSON数组中的的key=email的变量;目标值key为需要提取的数据名称;其他匹配值需要输入响应报文中其他的数据;变量默认值为当变量没有获取到时返回的值。

相关文章

网友评论

  • dany2016:响应结果:{"result":"G0444260257","contextPath":"","code":"0"}
    现在我需要取result的值"G0444260257"作为下一个接口的sessionid,可是使用bean shell获取不到?
    下面是我的代码,麻烦看一下谢谢!
    使用BeanShell Post Processor:代码如下
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;


    String json=prev.getResponseDataAsString();
    JSONObject jso = JSON.parseObject(json);
    JSONObject data = jso.getJSONObject("data");
    JSONArray result1 = data.getJSONArray("result");

    vars.put("outcome",result1.getJSONObject(0).getString("result1"));
    然后
    import com.test.mymd5;
    //定义机构代码
    String code = vars.get("customerCode");
    //定义时间戳
    String timestamp = vars.get("timestamp");
    //定义机构中的serial_number_md5,临时会话验证
    String ytoken = vars.get("ytoken");
    //定义机构的sessionId

    //定义英文下划线_ underscores
    String underscores = vars.get("underscores");
    //获取创建会话中的token验证的md5加密
    String itoken = mymd5.md5(code+timestamp+ytoken);
    //获取用户会话中的token验证的md5加密
    String ptoken = mymd5.md5(outcome+code+underscores+timestamp+ytoken);
    vars.put("itoken",itoken);
    vars.put("ptoken",ptoken);

    System.out.println(itoken);
    System.out.println(ptoken);

    现在我发现outcome的值返回的是void,不知道是哪里出现的问题...
    黄小呱:把result1改成result
  • PeTu:赞

本文标题:Jmeter-几种在响应报文中抽取数据的方法

本文链接:https://www.haomeiwen.com/subject/vszysttx.html