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

相关文章

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

SpringSecurity JWT基于令牌的无状态认证实现

《SpringSecurityJWT基于令牌的无状态认证实现》SpringSecurity中实现基于JWT的无状态认证是一种常见的做法,本文就来介绍一下SpringSecurityJWT基于令牌的无... 目录引言一、JWT基本原理与结构二、Spring Security JWT依赖配置三、JWT令牌生成与

MySQL中FIND_IN_SET函数与INSTR函数用法解析

《MySQL中FIND_IN_SET函数与INSTR函数用法解析》:本文主要介绍MySQL中FIND_IN_SET函数与INSTR函数用法解析,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一... 目录一、功能定义与语法1、FIND_IN_SET函数2、INSTR函数二、本质区别对比三、实际场景案例分

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

SpringSecurity6.0 如何通过JWTtoken进行认证授权

《SpringSecurity6.0如何通过JWTtoken进行认证授权》:本文主要介绍SpringSecurity6.0通过JWTtoken进行认证授权的过程,本文给大家介绍的非常详细,感兴趣... 目录项目依赖认证UserDetailService生成JWT token权限控制小结之前写过一个文章,从S

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

CSS Padding 和 Margin 区别全解析

《CSSPadding和Margin区别全解析》CSS中的padding和margin是两个非常基础且重要的属性,它们用于控制元素周围的空白区域,本文将详细介绍padding和... 目录css Padding 和 Margin 全解析1. Padding: 内边距2. Margin: 外边距3. Padd

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数