首页 > 其他分享 >Rest-Assured 学习笔记

Rest-Assured 学习笔记

时间:2024-10-20 18:58:52浏览次数:8  
标签:Assured get 示例 笔记 static Rest public

Rest-Assured 学习笔记

Rest-Assured 学习笔记

安装 Rest-Assured

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

静态引入方式

import static io.restassured.RestAssured.*;
        

GET 请求示例

package com.test.rest_asslured;
import static io.restassured.RestAssured.*;

public class ApiTest {
    public static void main(String[] args) {
        given().
                when().get("https://httpbin.org/get?name=zhangsan").
                then().log().all();
    }
}
        

使用 queryParam 的 GET 请求

package com.test.rest_asslured;
import static io.restassured.RestAssured.*;

public class ApiTest {
    public static void main(String[] args) {
        given().
                queryParam("name", "zhangsan").
                when().get("https://httpbin.org/get").
                then().log().all();
    }
}
        

引入 TestNG

<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.7.1</version>
    <scope>test</scope>
</dependency>
        

Rest-Assured 语法

When-Then 是类似于驱动开发中定义的一种结构,Given 在某种场景下,When 发生什么事情,Then 产生什么结果。

  • given 设置测试预设(预设请求头,请求参数,请求体,cookies等等)
  • when 所要执行的操作(GET, POST 等)
  • then 解析结果,断言等。

POST 请求示例

@Test
public void ApiPostTest() {
    given().
            contentType("application/x-www-form-urlencoded;charset=UTF-8").
            formParam("name", "张三").
    when().
            post("https://httpbin.org/post").
    then().
            log().body();
}
        

使用 Jackson Databind

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.17.2</version>
</dependency>
        

断言机制

TestNG 提供了基本的断言机制,但通常使用 Hamcrest 断言框架,它在 Rest-Assured 中已经集成。

import static org.hamcrest.Matcher.*;
        

JSON 参数示例

{
    "lotto": {
        "lottoId": 5,
        "winning-numbers": [2, 45, 34, 23, 7, 5, 3],
        "winners": [
            {
                "winnerId": 23,
                "numbers": [2, 45, 34, 23, 3, 5]
            },
            {
                "winnerId": 54,
                "numbers": [52, 3, 12, 11, 18, 22]
            }
        ]
    }
}
        

XML 参数示例

<shopping>
    <category type="groceries">
        <item>Chocolate</item>
        <item>Coffee</item>
    </category>
    <category type="supplies">
        <item>Paper</item>
        <item quantity="4">Pens</item>
    </category>
    <category type="present">
        <item when="Aug 10">Kathryn's Birthday</item>
    </category>
</shopping>
        

JSON 断言解析示例

@Test
public void assertJson() {
    given().
    when().
            get("https://1857cad9-61db-44a6-b13f-6f518f76ba1d.mock.pstmn.io/json").
    then().
            // json断言
             assertThat().body("lotto.winning-numbers.min()", equalTo(2));
}
        

响应体断言 XML 示例

@Test
public void assertJsonXML() {
    given().
            when().
            get("https://1857cad9-61db-44a6-b13f-6f518f76ba1d.mock.pstmn.io/xml").
    then().
            // 断言category节点第一个item的值为Paper
            assertThat().body("shopping.category.find{it.@type=='groceries'}.item", hasItems("Chocolate", "Coffee"));
}
        

标签:Assured,get,示例,笔记,static,Rest,public
From: https://www.cnblogs.com/CodeByte2002/p/18487657

相关文章

  • 锐捷策略路由笔记
    概念:内部流量的负载分担:识别到流量后强制更改下一跳冗余备份:如果一侧链路断开会走另一条链路配置接口地址RSR1:intg0/2noswitchipadd192.168.100.124RSR2:intg0/0noswitchipadd192.168.100.224intg0/1noswitchipadd1.1.1.124intg0/2noswitc......
  • Linux学习笔记(复习版day008)
    1.僵尸进程僵尸进程(ZombieProcess)是指那些已经终止(即完成执行)的进程,但其父进程尚未读取其退出状态信息的进程。简单来说,僵尸进程的生命周期已经结束,但它的进程描述符仍然存在于系统中,以便父进程能够获取其退出状态。处理:1.top命令查询是否有僵尸进程,此处1zombie表示有一个......
  • C语言笔记21 字符串
    字符数组charword[]={'H','e','l','l','o','!'};word[0]Hword[1]eword[2]lword[3]lword[4]oword[5]!这不是C语言的字符串,只是字符数组,不能用字符串的方式做计算字符串charword[]={'H','e','l','l&......
  • 《深入理解Java虚拟机》读后笔记-垃圾收集器
    优点:与其他收集器的单线程相比简单而高效,对于内存资源受限的环境,它是所有收集器里额外内存消耗最小的。对于单核处理器或处理器核心数较少的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集效率应用场景:Serial收集器对于运行......
  • 大数据之路读书笔记(六)
    前言    上一章主要研究的是无线客户端日志采集中与浏览器端日志采集相对应的技术方案,现在开始要进行无线客户端日志采集特有技术的学习。特殊场景    页面事件和控件点击及其他事件都是一个行为产生一条日志,如果处理普通业务场景是足够的,但是一但业务场景......
  • 六,数组笔记及相关练习题大全
    Java编程基础:数组详解在Java编程中,数组是一块连续固定大小的内存空间,用于存储相同类型的多个元素。数组提供了索引的概念,允许通过索引访问和操作数组中的元素。本文将详细探讨Java中数组的定义、初始化、使用和示例。数组的定义和初始化数组在定义时需要指定数据类型和数组名。......
  • 五,Java控制流程语句最详细笔记
    Java控制流程语句:顺序结构详解在Java编程中,顺序结构是最基本的程序结构之一。它遵循简单的规则:按照代码编写的顺序,自上而下执行。这意味着程序会从上到下依次执行每一行代码,直到最后一行。本文将通过示例代码详细解释顺序结构的概念和应用。顺序结构的概念顺序结构是最简单的程......
  • 欧拉路径学习笔记
    简介定义:欧拉回路:通过图中每条边恰好一次的回路欧拉通路:通过图中每条边恰好一次的通路欧拉图:具有欧拉回路的图半欧拉图:具有欧拉通路但不具有欧拉回路的图摘自:oi-wiki。定义说白了就是小学的一笔画问题,这里直接给出三道例题。P7771【模板】欧拉路径,CF508D和CF36E。......
  • 程序员都在用的笔记软件
    作为一个重度笔记控,最近入手了一款叫“闪思笔记”的软件,用了几天后,我决定来跟大家唠唠。这款软件真是妥妥的“笔记界全能选手”,下面简单给你们介绍下。首先,界面设计:它走的是极简风,打开的瞬间,感觉自己脑海中多了一片宁静的白板。没有那些杂七杂八的干扰元素,就像个井井有条的书......
  • STL-set学习笔记
    set本质是平衡数,插入的数会自动排序并去重插入s.insert(1)删除<1>erase(id)删除指针id指向的数<2>erase(lid,rid)删除lid到rid所指向区间的数,且该区间为前闭后开区间<3>erase(val)删除值val遍历set的遍历涉及指针,其数据类型为set<int>::iterator,因为是指针......