RestAssured接口自动化从入门到框架搭建-19-解析和认证

2024-06-11 10:38

本文主要是介绍RestAssured接口自动化从入门到框架搭建-19-解析和认证,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这篇来学习下Rest Assured中的解析,在Rest Assured 几种解析有:XML,JSON,HTML.TEXT四种。我们可以从哪儿看到这几种类型呢,在请求头那里,可以看到content-type(例如下图),一般值是text/html这样,说明这个响应内容是html格式。而且前面我们知道,不管响应内容是什么格式,Rest Assured都会自动找到解析器,去进行解析。

 

1.全局指定Parse类型

例如在我们自己项目中,我们返回类型,比如说就只有一种就是JSON类型,那么我们在框架设计中可以指定默认的解析器就是JSON类型。一下是代码,如果知道是哪种类型就选择哪一行代码指定默认解析器。

        @Testpublic void testDefaultParser() {RestAssured.defaultParser = Parser.JSON;RestAssured.defaultParser = Parser.XML;RestAssured.defaultParser = Parser.HTML;}

 

2.在局部指定解析器

局部指定就是在某一个接口请求的时候指定。

        @Testpublic void testDefaultParser2() {//given().get("http://www.thomas-bayer.com/sqlrest/CUSTOMER/02/").then().using().defaultParser(Parser.JSON);given().get("http://www.thomas-bayer.com/sqlrest/CUSTOMER/02/").then().using().defaultParser(Parser.XML);}

 

3.使用自定义的Parser

有时候content-type不光是xml,存在一些自定义的类型。

        @Testpublic void testCustomerParser1(){RestAssured.registerParser("application/vnd.uoml+xml", Parser.XML);RestAssured.unregisterParser("application/vnd.uoml+xml");}

或者下面这样写

        @Testpublic void testCustomerParser2() {given().get("http://www.thomas-bayer.com/sqlrest/CUSTOMER/02/").then().using().parser("application/vnd.uoml+xml", Parser.XML);}

 

认证和授权

认证(authentication)
主要作用是验证你是谁,不能你告诉服务器你是谁,你就是谁。常用的认证方法有:
1. 登录表单
2. HTTP认证
3. HTTP digest
4. X.509证书
5. 其他自定义认证方法


授权(authorization)

主要作用是决定你是否有全选访问资源。主要实现方法有:
1. URLs访问控制
2. 安全对象和方法
3. 访问控制清单(ACLs)

 

这里我们来看看Rest Ressured中授权的代码在接口中的基本使用。

等待服务器询问秘钥方式

这种基本的认证就是,通过用户名和密码,也就是我们登录验证的场景。在Rest Assured中,这种场景大概是这样的:一开始Rest Assured不会直接把用户名和密码这个秘钥发给服务器。当服务器明确告诉客户端需要登录验证的时候,Rest Assured才发送,是放在请求头中发送,所以这个过程,至少执行了两次请求-响应过程,第一次不带用户名密码这个秘钥发送请求,响应告诉客户端你需要告诉我登录秘钥。第二次客户端发送请求,请求头带上账号信息,第二次服务器返回响应。

        @Testpublic void testBasicChallengeAuthentication() {given().auth().basic("tom", "123").when().get("https://www.xxx.com").then().statusCode(200);}

这种方式还可以这样写

        @Testpublic void testBasicAuthentication() {RestAssured.authentication = basic("tom", "123");given().get("https://www.xxx.com").then().statusCode(200);}

 

先发制人方式

上面是等待服务器明确要求认证,Rest Assured才发送账号秘钥。还有方式就是,不等服务器询问,啥也不管,把秘钥发过去再说,类似先发制人的效果。

        @Testpublic void testBasicPreemptiveAuthentication() {given().auth().preemptive().basic("tom", "123").when().get("https://www.xxx.com").then().statusCode(200);}

 

Digest盘问方式

Digest认证方式是HTTP协议的一种算法,这种方式也是需要等待服务器盘问之后,才发送秘钥。简单来看一个例子,了解一下。

        @Testpublic void testDigestAuthentication() {given().auth().digest("tom", "123").when().get("https://www.xxx.com").then().statusCode(200);}

       前面这十几篇文章介绍了Rest Assured这个接口测试工具的基本功能,主要就是练习使用Rest Assured提供的API,接下来文章,主要介绍如何借助Rest Assured来搭建我们接口自动化测试框架。

这篇关于RestAssured接口自动化从入门到框架搭建-19-解析和认证的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

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

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

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

Spring 框架之Springfox使用详解

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

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决