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

相关文章

Gin框架中的GET和POST表单处理的实现

《Gin框架中的GET和POST表单处理的实现》Gin框架提供了简单而强大的机制来处理GET和POST表单提交的数据,通过c.Query、c.PostForm、c.Bind和c.Request.For... 目录一、GET表单处理二、POST表单处理1. 使用c.PostForm获取表单字段:2. 绑定到结

Spring中@Lazy注解的使用技巧与实例解析

《Spring中@Lazy注解的使用技巧与实例解析》@Lazy注解在Spring框架中用于延迟Bean的初始化,优化应用启动性能,它不仅适用于@Bean和@Component,还可以用于注入点,通过将... 目录一、@Lazy注解的作用(一)延迟Bean的初始化(二)与@Autowired结合使用二、实例解

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

Python自动化Office文档处理全攻略

《Python自动化Office文档处理全攻略》在日常办公中,处理Word、Excel和PDF等Office文档是再常见不过的任务,手动操作这些文档不仅耗时耗力,还容易出错,幸运的是,Python提供... 目录一、自动化处理Word文档1. 安装python-docx库2. 读取Word文档内容3. 修改

Python自动化办公之合并多个Excel

《Python自动化办公之合并多个Excel》在日常的办公自动化工作中,尤其是处理大量数据时,合并多个Excel表格是一个常见且繁琐的任务,下面小编就来为大家介绍一下如何使用Python轻松实现合... 目录为什么选择 python 自动化目标使用 Python 合并多个 Excel 文件安装所需库示例代码

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

MyBatis-Flex BaseMapper的接口基本用法小结

《MyBatis-FlexBaseMapper的接口基本用法小结》本文主要介绍了MyBatis-FlexBaseMapper的接口基本用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具... 目录MyBATis-Flex简单介绍特性基础方法INSERT① insert② insertSelec

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri

Idea实现接口的方法上无法添加@Override注解的解决方案

《Idea实现接口的方法上无法添加@Override注解的解决方案》文章介绍了在IDEA中实现接口方法时无法添加@Override注解的问题及其解决方法,主要步骤包括更改项目结构中的Languagel... 目录Idea实现接China编程口的方法上无法添加@javascriptOverride注解错误原因解决方