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

相关文章

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro