利器 | 接口自动化测试框架 RESTAssured 实践(三):对 Response 结果导出

简介: ![](https://ceshiren.com/uploads/default/original/3X/f/7/f71993f19f3b4b7323fe8c89a1ba0cc56a6821c8.jpeg)上一篇文章中介绍了rest-assured对返回结果的断言,最后说明了对于Response结果导出的需求。可查看往期文章进行查看。```HTTP/1.1 200 OKServe
更多技术文章分享和免费资料领取

上一篇文章中介绍了rest-assured对返回结果的断言,最后说明了对于Response结果导出的需求。可查看往期文章进行查看。

HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Mon, 13 Jan 2020 02:15:11 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Expires: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
X-XSS-Protection: 1; mode=block
Pragma: no-cache
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Proxy-Connection: keep-alive

{
    "code": 1,
    "msg": null,
    "data": {
        "tenant_id": 6,
        "userType": "1",
        "dept_id": 0,
        "user_id": 6,
        "username": "xxx",
        "jti": "afeb93f8-e4e4-4c15-955b-90cee130c4c7",
        "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.exxxzciLCJjbGllbnRfaWQiOiJzeXN0ZW0iLCJ1c2VybmFtZSI6InFpbnpoZW4ifQ.6NQmjJp_9XSveOaATNLjtTktWe6_WjHY0o9NbBUdDx8",
        "expires_in": 9999999,
        "token_type": "bearer"
        }
        ...
 }
@Test
void login(){
     .. .
     when()
             .log().all().post("http://47.xxx.xxx.133/auth/oauth/token").
     then()
             .log().all().statusCode(200).body("code",equalTo(1))
     .extract().path("data.user_id");
     System.out.println("返回id的值是:"+id);
 }

运行结果:

extract().asString()
有时候我们可能需要获取ResponseBody中的多个值,例如我们现在想要获取返回体body中的dept_id和user_id,我们就可以利用extract().asString()先将响应结果以json字符串的形式保存下来,再一一根据需要获取,具体写法如下:

@Test
void login(){
     .. .
     when()
             .log().all().post("http://47.xxx.xxx.133/auth/oauth/token").
     then()
             .log().all().statusCode(200).body("code",equalTo(1))
     .extract().asString();
     System.out.println("返回body的值是:"+json);
     System.out.println("获取user_id的值是:"+ from(json).get("data.user_id"));
     System.out.println("获取dept_id的值是:"+ from(json).get("data.dept_id"));
 }

运行结果:

extract().response()
上面都是对响应体的结果进行导出,但是实际工作中我们的需求远不止于此,我们可能还需要响应头等信息,例如一些接口的Token、就可能会在响应信息的Header中返回;
这个时候就可以利用extract().response()来讲所有的response信息都保存成一个Response对象:

@Test
void login(){
     .. .
     when()
             .log().all().post("http://47.xxx.xxx.133/auth/oauth/token").
     then()
             .log().all().statusCode(200).body("code",equalTo(1))
     .extract().response();
   System.out.println("返回response是:"+response);
 } 

运行结果:

然后在利用各种Response.get方法来获取。
1)获取所有的Headers

@Test
void login(){
     .. .
     when()
             .log().all().post("http://47.xxx.xxx.133/auth/oauth/token").
     then()
             .log().all().statusCode(200).body("code",equalTo(1))
     .extract().response();
   System.out.println("返回headers是:\n"+response.getHeaders());
 }

运行结果:

2)获取某一个header值
类似key,value的结构,使用getHeader("headerName")即可,例如我们这里要获取Content-type的值:

@Test
void login(){
     .. .
     when()
             .log().all().post("http://47.xxx.xxx.133/auth/oauth/token").
     then()
             .log().all().statusCode(200).body("code",equalTo(1))
     .extract().response();
   System.out.println("返回Content-Type是:\n"+response.getHeader("Content-Type"));
 }

运行结果:

3)获取status line——getStatusLine()

@Test
void login(){
     .. .
     when()
             .log().all().post("http://47.xxx.xxx.133/auth/oauth/token").
     then()
             .log().all().statusCode(200).body("code",equalTo(1))
     .extract().response();
   System.out.println("返回StatusLine是:\n"+response.getStatusLine());
 }

运行结果:

4)获取status code——getStatusCode()

@Test
void login(){
     .. .
     when()
             .log().all().post("http://47.xxx.xxx.133/auth/oauth/token").
     then()
             .log().all().statusCode(200).body("code",equalTo(1))
     .extract().response();
   System.out.println("返回StatusCode是:\n"+response.getStatusCode());
 }

运行结果:

5)获取cookies——getCookies()、getCookie(“cookieName”)
rest-assured还为我们提供了方便的获取cookie的方法;因本例中无cookies返回,所以仅展示代码语法,有需要的可自行测试或参考官方文档

// Get all cookies as simple name-value pairs
Map<String, String> allCookies = response.getCookies();
// Get a single cookie value:
String cookieValue = response.getCookie("cookieName");

上述这些已几乎可满足日常工作所需,如有需要可在官网进一步研究,官网还提供了获取同名多值的header和cookie等方法:

相关参考链接:
RESTAssured 官方文档:
https://github.com/rest-assured/rest-assured/wiki/Usage

对于想系统进阶提升测试开发技能的同学,推荐霍格沃兹测试学院出品的 《测试开发从入门到高级实战》系统进阶班课程。

原文链接

⬇️ 点击“下方链接”,提升测试核心竞争力!

更多技术文章分享和免费资料领取
相关文章
|
6月前
|
资源调度 测试技术 Linux
一款接口自动化神器—开源接口测试平台Lim(Less is More)
一款接口自动化神器—开源接口测试平台Lim(Less is More)
325 2
|
6月前
|
敏捷开发 API
【sgCreateAPI】自定义小工具:敏捷开发→自动化生成API接口脚本(接口代码生成工具)
【sgCreateAPI】自定义小工具:敏捷开发→自动化生成API接口脚本(接口代码生成工具)
|
3月前
|
JSON jenkins 测试技术
Python接口自动化测试框架(工具篇)-- 接口测试工具HTTPRUNNER
本文介绍了Python接口自动化测试框架HTTPRunner,包括其安装、使用方法,并通过实际操作演示了如何利用HTTPRunner进行接口测试,同时还探讨了HTTPRunner作为接口自动化测试解决方案的可能性和实用性。
65 0
|
前端开发 JavaScript 测试技术
接口自动化测试平台--LRUN (一)
接口自动化测试平台--LRUN
|
JSON 测试技术 API
接口自动化测试平台--LRUN (二)
接口自动化测试平台--LRUN
|
JSON 数据可视化 Oracle
比swggaer更好用的接口文档工具
今天给大家推荐一个新接口工具:YesApi接口大师。 YesApi接口大师(5合1):Admin接口管理后台,看这个名称就知道,这个工具很符合国内程序员、以及技术小白使用。通过网站界面,它能帮你轻松管理API接口,除了可以自动生成接口文档、还能生成API接口源代码、通过界面鼠标就能开发接口,一键、快速发布、管理和开放你的API接口。
|
测试技术 Python
python接口自动化(五)--接口测试用例和接口测试报告模板(详解)
当今社会在测试领域,接口测试已经越来越多的被提及,被重视,而且现在好多招聘信息要对接口测试提出要求。区别于传统意义上的系统级别测试,很多测试人员在接触到接口测试的时候,也许对测试执行还可以比较顺利的上手,但一 提到相关的文档,比如测试用例和报告,就有些不知所措了。这类问题在我加入的几个测试的群里,经常看到一些人在不断提问。   今天就用这篇文章来说说接口测试用例和报告。
436 2
python接口自动化(五)--接口测试用例和接口测试报告模板(详解)
|
SQL JSON jenkins
接口自动化 [授客]基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0
接口自动化 [授客]基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0
181 0
|
Python
接口自动化框架(Python)之 一,如何规划自动化框架
接口自动化框架(Python)之 一,如何规划自动化框架
143 0
接口自动化框架(Python)之 一,如何规划自动化框架
|
Java 关系型数据库 MySQL
【接口自动化】2.快速搭建接口自动化框架
【接口自动化】2.快速搭建接口自动化框架
【接口自动化】2.快速搭建接口自动化框架