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

相关文章

从入门到精通MySQL联合查询

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

从入门到精通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 是

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

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

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(

如何使用Haporxy搭建Web群集

《如何使用Haporxy搭建Web群集》Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多如LVS和Nginx,本案例介绍使用Haproxy及Nginx搭建一套Web群集,感兴趣的... 目录一、案例分析1.案例概述2.案例前置知识点2.1 HTTP请求2.2 负载均衡常用调度算法 2.

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

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

Redis 配置文件使用建议redis.conf 从入门到实战

《Redis配置文件使用建议redis.conf从入门到实战》Redis配置方式包括配置文件、命令行参数、运行时CONFIG命令,支持动态修改参数及持久化,常用项涉及端口、绑定、内存策略等,版本8... 目录一、Redis.conf 是什么?二、命令行方式传参(适用于测试)三、运行时动态修改配置(不重启服务

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

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

MySQL DQL从入门到精通

《MySQLDQL从入门到精通》通过DQL,我们可以从数据库中检索出所需的数据,进行各种复杂的数据分析和处理,本文将深入探讨MySQLDQL的各个方面,帮助你全面掌握这一重要技能,感兴趣的朋友跟随小... 目录一、DQL 基础:SELECT 语句入门二、数据过滤:WHERE 子句的使用三、结果排序:ORDE