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

本文主要是介绍利器 | 接口自动化测试框架 RESTAssured 实践(三):对 Response 结果导出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上一篇文章中介绍了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

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

这篇关于利器 | 接口自动化测试框架 RESTAssured 实践(三):对 Response 结果导出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/406831

相关文章

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

springboot依靠security实现digest认证的实践

《springboot依靠security实现digest认证的实践》HTTP摘要认证通过加密参数(如nonce、response)验证身份,避免明文传输,但存在密码存储风险,相比基本认证更安全,却因... 目录概述参数Demopom.XML依赖Digest1Application.JavaMyPasswo

MySQL中C接口的实现

《MySQL中C接口的实现》本节内容介绍使用C/C++访问数据库,包括对数据库的增删查改操作,主要是学习一些接口的调用,具有一定的参考价值,感兴趣的可以了解一下... 目录准备mysql库使用mysql库编译文件官方API文档对象的创建和关闭链接数据库下达sql指令select语句前言:本节内容介绍使用C/

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

前端导出Excel文件出现乱码或文件损坏问题的解决办法

《前端导出Excel文件出现乱码或文件损坏问题的解决办法》在现代网页应用程序中,前端有时需要与后端进行数据交互,包括下载文件,:本文主要介绍前端导出Excel文件出现乱码或文件损坏问题的解决办法,... 目录1. 检查后端返回的数据格式2. 前端正确处理二进制数据方案 1:直接下载(推荐)方案 2:手动构造

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

Java 结构化并发Structured Concurrency实践举例

《Java结构化并发StructuredConcurrency实践举例》Java21结构化并发通过作用域和任务句柄统一管理并发生命周期,解决线程泄漏与任务追踪问题,提升代码安全性和可观测性,其核心... 目录一、结构化并发的核心概念与设计目标二、结构化并发的核心组件(一)作用域(Scopes)(二)任务句柄