首页 > 其他分享 >Rest-assured框架详解

Rest-assured框架详解

时间:2024-09-11 18:14:20浏览次数:1  
标签:body httpbin assured get Rest 详解 org post

Rest-assured框架官网

官网url:  https://rest-assured.io/

一、接口测试介绍

- 什么是接口测试

本质上基于某种协议,发送请求给服务器,服务器返回响应数据,对响应数据进行分析,判断和我们的预期是否一致,从而验证功能是否正确。

- 为什么做接口测试

更早发现问题,降低研发成本
减少回归测试人力成本与时间,快速的质量反馈
更容易实现持续集成

-接口自动化测试流程

  • 理解业务需求
  • 分析接口测试范围
  • 接口测试用例设计
  • 接口测试框架选择,常见的如 RestAssured
  • 接口测试用例编写
  • 框架与用例维护
  • 持续集成

二. REST-assured基本使用

REST-assured 是一种专为测试 REST API 而设计的测试框架。

1. pom.xml文件中 引入依赖

<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>

 

2. 语法格式

given().
   XXXX
when().
   XXXX
then().
   XXXX

given:设置测试预设,包括请求头、请求参数、请求体、cookie等
when:所要执行的操作,即发起请求的网址(GET / POST 请求)
then:解析结果、断言

3.发送请求
httpbin 是一个测试 HTTP 请求的网址,向它传递什么参数,它就会返回什么参数。

根据 http://httpbin.org/get 或者 http://httpbin.org/post 区分是 get 还是 post 请求。

三.请求method传参方式

3.1 GET请求

方式一:直接在在URL地址后面拼接参数

import org.testng.annotations.Test;
import static io.restassured.RestAssured.*;

public class Test {
    @Test
    public void test() {
        given().
        when().
                get("http://httpbin.org/get?name=jay").
        then().
            log().body(); //返回响应体中的数据
            //log可以向控制台输出返回的信息
            //log().all() 可以返回所有响应中的数据
    }
}

方式二:通过 queryParam 方法添加参数

import org.testng.annotations.Test;
import static io.restassured.RestAssured.*;

public class Test {
    @Test
    public void test() {
        given().
                queryParam("name", "jay").
                queryParam("age", "22").
        when().
                get("http://httpbin.org/get").
        then().
            log().body();
    }
}

3.2 POST请求

1. form表单参数

参数在url后面的样式:
public class Test {
    @Test
    public void test() {
        given().
                formParam("name", "jay").
                formParam("password", "qwerty").
        when().
                post("http://httpbin.org/post").
        then().
            log().body();
    }
}

运行结果:

 

2.JSON参数类型

String jsonData = "{\"mobilephone\":\"13323234545\",\"password\":\"234545\"}";
given().
    body(jsonData).
    contentType(ContentType.JSON). //使用body时必须指定类型
when().
    post("http://httpbin.org/post").
then().
    log().body();

3.xml参数类型

String xmlStr = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
                "<suite>\n" +
                " <class>测试xml</class>\n" +
                "</suite>";

given().
    contentType(ContentType.XML).
    body(xmlStr).
when().
    post("http://www.httpbin.org/post").
then().
    log().body();

4. 上传文件
REST-assured 提供了一个叫做 multiPart() 的方法可以指定文件(file)、字节数组(byte-array)、输入流或者是上传文件:

given().
    multiPart(new File("D:\\match.png")).
when().
    post("http://httpbin.org/post").
then().
    log().body();

 

四. 获取api响应

通过 extract().response() 将响应结果赋值到一个 Response 类型的变量中。

Response res=
        given().
            contentType(ContentType.JSON).
            body(jsonData).
            //headers(Map map),将JSON格式的多个header,通过fastjson转换成map:Map result = (Map) JSON.parse(JSON_String);
        when().
            post("http://httpbin.org/post").
        then().
            extract().response();

//获取接口的响应时间(ms)
System.out.println(res.time());
//获取响应头信息
System.out.println(res.getHeader("Content-Type"));
//获取响应体信息(Json格式)
System.out.println(res.jsonPath().get("lotto.lottoId"));

Gpath的使用:

Gpath用来提取响应中的某一个具体的数据。

提取JSON:res.jsonPath().get(“XXX.XXX.XXX”);
提取xml:res.xmlPath().get(“XXX.XXX.XXX”);
提取HTML:res.htmlPath().get(“XXX.XXX.XXX”);

1) 提取JSON示例:

 

2) 提取HTML示例:

获取HTML响应时,通过 标签名.标签名 的方式获取标签中的值,通过 @属性名 的方式获取属性的值:

 3) 提取xml与提取HTML使用方式几乎一致。

 

注意:

  • 1.  REST-assured 获取响应时如果返回的是 JSON 小数,那么对应的Java类型是float,但是为了解决丢失精度的问题,一般都会将其转换为BigDecimal。
  • 2.  如果想要将返回结果转换成BigDecimal,需要添加配置,如下图:

 

  • 3. 将浮点数转换成BigDecimal:

BigDecimal bigDecimal =BigDecimal.valueOf(3.14159);

全局配置:

 使用了 baseURI 全局配置之后地址会自动的拼接:

 

 

  • 4.一些基本的自动化过程:比如登录注册的测试用例写在了同一个 Excel 文件中,可以使用 @BeforeMethod 注解标记注册方法(先注册后登录),@Test 注解标记登录方法,定义两个 dataprovider 方法,分别读取 Excel 的某几行作为登录或注册的测试用例,将这些测试用例放在对应的测试方法中按顺序运行


原文链接:https://blog.csdn.net/wxsyj/article/details/127068752

标签:body,httpbin,assured,get,Rest,详解,org,post
From: https://www.cnblogs.com/pingguomang/p/18408686

相关文章

  • 一文详解多功能智慧交通标志杆的优势
    交通标志杆是常见的城市基础设施,它们沿街而立,引导着行人和车辆,默默维护着城市交通的流畅与和谐。然而随着时代发展,传统的交通标志杆也逐渐体现出诸多不足之处。得益于物联网技术的广泛应用,新型智慧多功能交通标志杆应运而生,它们不仅仅有道路交通指示导引作用,还集成了监控、环境感......
  • HTTP状态码301和302的区别详解
    文章目录   1、简介   2、301永久重定向   3、302临时重定向   4、为何要重定向?   5、何时会重定向?   6、301和302的区别   7、302的危害/风险1、简介HTTP状态码中,301和302都是网页重定向跳转,但是两者的使用场景和效果是不一样的,不认真学习很容易搞混......
  • openGauss增量备份与恢复技术详解及定时触发实现
    openGauss作为一款高性能、高可靠的开源数据库系统,支持全量备份和增量备份,以满足不同场景下的数据保护需求。本文将详细介绍openGauss的增量备份与恢复的实现方法,并提供详细的实现代码、配置说明以及如何实现定时触发增量备份操作。0、前言查看磁盘信息通过df-lh命令查......
  • 互联网算法备案必要性+攻略全流程详解【附件+流程】
    一、算法备案的重要性算法备案是指相关企业或组织向有关部门提交其使用的算法的相关信息,以接受监管和审查。这一举措有助于确保算法的公正性、透明性和合法性,保护用户的权益,促进数字经济的健康发展。算法备案必要性强制性例如,在推荐系统中,如果算法存在偏见或歧视,可能会导致......
  • Oracle索引常用操作详解
    在Oracle中,索引是一种数据库对象,用于提高查询性能。通过索引,Oracle可以更快地找到数据,尤其是在处理大量数据时。常见的索引类型包括B-Tree索引、位图索引、唯一索引等。索引可以加速查询,但过多的索引可能会影响数据修改的性能,因此需要合理使用。1.索引的基本操作创......
  • 重装系统详解
            详细的讲解一下如何重装系统,简单易上手。一些废话:    为什么我要学重装系统,因为一个坑,我电脑里面配置的环境和存储的文件太杂乱,我自己又不想慢慢的去整理,所以打算一下全都删干净了从头开始,但是我找店铺去重装系统的时候,他给我安装了一个盗版的系统,花......
  • Python系列(11)- 使用 Pipenv 搭建 Django + Rest Framework 开发环境
    Django是一个开放源代码的Web应用框架,用Python语言编写的。采用了MTV的框架模式,即模型Model,模版Template和视图View。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。Django:http://www.djangoproject.comGitHub:htt......
  • Java 常用集合方法详解
    在Java编程中,集合框架提供了丰富的数据结构和算法来存储和操作数据。集合框架主要包含了List、Set和Map接口,其中List和Map是最常用的接口。本文将深入探讨List和Map接口下的集合类及其常用方法,包括实际应用示例和代码片段。1.List接口及其常用方法List接口......
  • Java 排序算法详解
    排序是计算机科学中的基本操作,Java提供了多种排序算法来满足不同的需求。常见的排序算法包括冒泡排序、选择排序、插入排序、归并排序、快速排序和堆排序。本文将逐一介绍这些排序算法及其Java实现。1.冒泡排序(BubbleSort)冒泡排序是一种简单的排序算法,其基本思想是......
  • 零基础国产GD32单片机编程入门(十六)DMA详解及ADC-DMA方式采集含源码
    文章目录一.概要二.GD32F103C8T6单片机DMA外设特点三.GD32单片机DMA内部结构图四.DMA各通道请求五.GD32F103C8T6单片机ADC-DMA采集例程六.工程源代码下载七.小结一.概要基本概念:DMA是DirectMemoryAccess的首字母缩写,是一种完全由硬件执行数据交换的工作方式。DM......