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
知道、想到、做到、得到
分类:
测试开发
, rest-assured
标签:
restassured
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)