rest-assured|获取响应值实战

一、前言

  在我们做接口自动化的时候,会经常遇到这样的场景,先登录,然后拿到access_token,才能去调用其他的接口,那么rest-assured是如何做到的呢

二、实践

  以企业微信登录接口为例

复制代码
package restassureddemo.weixin;


import io.restassured.http.ContentType;
import org.junit.jupiter.api.Test;

import static io.restassured.RestAssured.given;

public class TestWeixin1 {

    /*
    * 企业微信登录接口
    * */
    @Test
    public void Login(){
        given().
                contentType ( ContentType.JSON )
                .log().all()
                //大家自行去注册企业微信账号,并且正确获取corpid和corpsecret
                .param ( "corpid","wwc376242756245a87" )
                .param ( "corpsecret","LTnDiVdqHzzmUz8fj21-0kgxv6wEDs3krBnO-0g4MPw" )
                .when ()
                .get("https://qyapi.weixin.qq.com/cgi-bin/gettoken")
                .then()
                .statusCode(200)
                .log().all();

    }
}
复制代码

output:

{
    "errcode": 0,
    "errmsg": "ok",
    "access_token": "bWTUKz2gxkqMgsMd4Def6ybHU0fF4Zpn-a3LVjHrCtdf-1x7OClrGkvbk2q_AncRvE2oUGqWoqaICzpLvXLA43--MceehKVtmwDPjD4PZ9gcKEjgLCdnrwqvNG75xhfolQ55QIOs59ESNq5OD6wT4itGuMTTIqrAsX2rwv4UVJFMWmk_o7LAU2jjsjoewgMq9OtC78Pp9haQa3n11MR6ww",
    "expires_in": 7200
}

  

  • 获取单个值,直接获取某个值

复制代码
package restassureddemo.weixin;


import io.restassured.http.ContentType;
import org.junit.jupiter.api.Test;

import static io.restassured.RestAssured.given;

public class TestWeixin1 {

    /*
    * 企业微信登录接口
    * */
    @Test
    public void Login(){
       String access_token =  given().
                contentType ( ContentType.JSON )
                //大家自行去注册企业微信账号,并且正确获取corpid和corpsecret
                .param ( "corpid","wwc376242756245a88" )
                .param ( "corpsecret","LTnDiVdqHzzmUz8fj21-0kgxv6wEDs3krBnO-0g4MPw" )
                .when ()
                .get("https://qyapi.weixin.qq.com/cgi-bin/gettoken")
                .then()
                .statusCode(200)
                .extract ().response ().path ( "access_token" );
        System.out.println ( "access_token的值为:" + access_token );

    }
}
复制代码
  • 获取多个值,获取整个response响应体

复制代码
package restassureddemo.weixin;


import io.restassured.http.ContentType;
import io.restassured.response.Response;
import org.junit.jupiter.api.Test;

import static io.restassured.RestAssured.given;

public class TestWeixin1 {

    /*
    * 企业微信登录接口
    * */
    @Test
    public void Login(){

       Response response = given ().
                contentType ( ContentType.JSON )
                //大家自行去注册企业微信账号,并且正确获取corpid和corpsecret
                .param ( "corpid","wwc376242756245a88" )
                .param ( "corpsecret","LTnDiVdqHzzmUz8fj21-0kgxv6wEDs3krBnO-0g4MPw" )
                .when ()
                .get("https://qyapi.weixin.qq.com/cgi-bin/gettoken")
                .then()
                .statusCode(200)
                .extract ().response ();

        String access_token = response.path ( "access_token" );
        String errmsg = response.path ( "errmsg" );

        System.out.println ( "access_token的值为:" + access_token );
        System.out.println ( "errmsg的值为:" + errmsg );

    }
}
复制代码
  •  获取某个路径下的值,如下面的next

 {
     "title" : "My Title",
      "_links": {
              "self": { "href": "/title" },
              "next": { "href": "/title?page=2" }
           }
 }

测试代码:

 .extract ().response ().path ( "_links.self.next" );
  •  使用JsonPath

  •  使用XmlPath

posted @   未来可期_Durant  阅读(315)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示