利器 | 接口自动化测试框架 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

相关文章

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

Spring事务传播机制最佳实践

《Spring事务传播机制最佳实践》Spring的事务传播机制为我们提供了优雅的解决方案,本文将带您深入理解这一机制,掌握不同场景下的最佳实践,感兴趣的朋友一起看看吧... 目录1. 什么是事务传播行为2. Spring支持的七种事务传播行为2.1 REQUIRED(默认)2.2 SUPPORTS2

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基