RestAssured接口自动化从入门到框架搭建-18-序列化和反序列化

2024-06-11 10:38

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

这篇来学习一下序列化和反序列化,先看看什么是序列化和反序列化。

 

1.什么是序列化和反序列化

可以看看这个文档https://data-flair.training/blogs/serialization-and-deserialization-in-java

也可以去百度百科,查一下什么是序列化和反序列化。

从上图中可以看到,序列化就是把对象转换为字节流的过程,反过来,反序列化就是把字节流转换成对象的过程。在Java中这个object就是我们的实体类,习惯叫Java Bean类。

 

2.HashMap对象序列化JSON对象代码练习

现在我们接口请求,例如Content-Type一般都是JSON格式传入,由于Content-Type是一个键值对,可能还存在多个值,我们很多时候是通过HashMap对象来存储这个值,那么Rest Assured就需要把HashMap对象装换成JSON对象。

package demo;import java.util.HashMap;
import java.util.Map;
import static io.restassured.RestAssured.*;import org.testng.annotations.Test;public class SerializationDeSerializationTest {@Testpublic void testSerializationUsingHashMap() {Map<String, String> inputJson =  new HashMap<String, String>();inputJson.put("FirstName", "Anthony");inputJson.put("LastName", "Liu");inputJson.put("Age", "18");given().contentType("application/json").body(inputJson).when().post("http://www.thomas-bayer.com/restnames/countries.groovy").then().statusCode(200);}
}

这个用例是可以运行通过的。

 

3.Bean类序列化成JSON对象

有时候我们class对象很大,比几个HashMap键值对来说,数据有点大,这时候我们有很容易办法把class对象转换成JSON对象,一般这种class是有要求,我们习惯叫Java Bean类。下面来一个一个例子。

先创建一个Java Bean类

package demo;public class User {private int age;private int weight;private String home;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getWeight() {return weight;}public void setWeight(int weight) {this.weight = weight;}public String getHome() {return home;}public void setHome(String home) {this.home = home;}}

然后在请求中把Bean对象装换成JSON,这里转换Rest Asserted帮我们完成了。

        @Testpublic void testSerializationUsingBeanClass() {User u = new User();u.setAge(18);u.setWeight(75);u.setHome("China");given().contentType("application/json").body(u).when().post("http://www.thomas-bayer.com/restnames/countries.groovy").then().statusCode(200).contentType("application/xml").log().all();}

这个用例也是可以运行通过,大家可以试一试。

这里提一下,在序列化这行代码boday()中是可以指定JSON 版本Lib去执行装换。

一般我们使用默认就好,其中JACKSON2要比JACKSON1要快一点。

 

4.把响应内容反序列化成class对象

来一个把响应内容反序列化成Java对象的练习,我们先写一个UserResponse.java,定义响应User信息的Bean类。

package demo;public class UserResponse {int regId;String city;public int getRegId() {return regId;}public void setRegId(int regId) {this.regId = regId;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}}

定义好了这个类,在接口请求回来的响应地方,我们就可以处理一些断言。

        @Testpublic void testDeSerialization() {User u = new User();u.setAge(18);u.setWeight(75);u.setHome("China");UserResponse ur =given().body(u).when().post("http://www.thomas-bayer.com/restnames/countries.groovy").as(UserResponse.class);// 断言ur.setRegId(1101); // 随意设置一个响应数据Assert.assertTrue(ur.getRegId() > 0);}

在Rest Assured中,我们不用关系response的格式是xml还是json,会自动帮我们选择合适解析器来解析。

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



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

相关文章

如何配置Spring Boot中的Jackson序列化

《如何配置SpringBoot中的Jackson序列化》在开发基于SpringBoot的应用程序时,Jackson是默认的JSON序列化和反序列化工具,本文将详细介绍如何在SpringBoot中配置... 目录配置Spring Boot中的Jackson序列化1. 为什么需要自定义Jackson配置?2.

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

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

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.