最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java接口測(cè)試框架Restassured介紹及常用方法

 更新時(shí)間:2026年03月27日 10:34:23   作者:Yweir  
Java接口測(cè)試主要用于驗(yàn)證Java應(yīng)用程序中不同模塊或服務(wù)之間的交互是否符合預(yù)期,這篇文章主要介紹了Java接口測(cè)試框架Restassured介紹及常用方法的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

接口測(cè)試框架Restassured介紹

市場(chǎng)上的主流的接口測(cè)試框架

  • Postman:提供了類(lèi)似RestAssured的功能,包括請(qǐng)求發(fā)送、斷言和響應(yīng)處理等。
  • Apache HttpClient:一個(gè)用于發(fā)送HTTP請(qǐng)求的Java庫(kù),提供了更底層的控制和定制化。
  • JUnit:雖然JUnit主要用于單元測(cè)試,但它可以與RestAssured等庫(kù)集成,用于編寫(xiě)針對(duì)API接口的集成測(cè)試。
  • MockMvc:是Spring框架下的一個(gè)模擬框架,用于模擬Web請(qǐng)求和響應(yīng)

接口測(cè)試框架【Restassured】

  • 一個(gè)基于Java的輕量級(jí)接口測(cè)試框架,主要用于簡(jiǎn)化基于HTTP協(xié)議的接口測(cè)試,簡(jiǎn)單易用、功能強(qiáng)大、可擴(kuò)展性好
  • 官網(wǎng):http://rest-assured.io
  • 優(yōu)點(diǎn)
    • 簡(jiǎn)單易用,RestAssured提供了簡(jiǎn)單易用的API,可以輕松地編寫(xiě)測(cè)試代碼。
    • 功能強(qiáng)大,支持多種請(qǐng)求方法、斷言和驗(yàn)證響應(yīng)內(nèi)容、狀態(tài)碼、響應(yīng)時(shí)間等特性
    • 可擴(kuò)展性好,RestAssured可以與TestNG、JUnit等測(cè)試框架完美集成
    • 支持多種數(shù)據(jù)格式處理,RestAssured可以處理JSON和XML格式的數(shù)據(jù)
    • 支持結(jié)構(gòu)化解析和多種解析方式,支持xpath/jsonpath/gpath等解析方式
    • 對(duì)Spring的支持比較全面,方便使用Spring框架的開(kāi)發(fā)者
  • 缺點(diǎn)
    • 依賴(lài)性強(qiáng):RestAssured依賴(lài)于Java和HTTP協(xié)議,對(duì)于非Java或非HTTP協(xié)議的接口可能不太適用
    • 需要配置測(cè)試環(huán)境:在使用RestAssured進(jìn)行接口自動(dòng)化測(cè)試之前,需要搭建相應(yīng)的測(cè)試環(huán)境,包括服務(wù)器、數(shù)據(jù)庫(kù)等。
    • 非0基礎(chǔ)上手:雖然RestAssured提供了簡(jiǎn)單易用的API,但對(duì)于初學(xué)者來(lái)說(shuō),仍然需要一定的學(xué)習(xí)成本才能掌握。

SpringBoot3.X整合

<dependency>
            <groupId>io.rest-assured</groupId>
            <artifactId>rest-assured</artifactId>
        </dependency>
        <dependency>
            <groupId>io.rest-assured</groupId>
            <artifactId>rest-assured-all</artifactId>
        </dependency>
        <dependency>
            <groupId>io.rest-assured</groupId>
            <artifactId>spring-web-test-client</artifactId>
        </dependency>

快速開(kāi)始

  • given:設(shè)置測(cè)試預(yù)設(shè),包括請(qǐng)求頭、請(qǐng)求參數(shù)、請(qǐng)求體、cookie等
  • when:所要執(zhí)行的操作,配置發(fā)起請(qǐng)求的網(wǎng)址(GET / POST 請(qǐng)求)
  • then:解析結(jié)果、斷言
@SpringBootTest
public class AssuredTest {
    @Test
    public void testBase() {
        RestAssured.given()
                .param("id", 1)
                .when()
                .get("http://127.0.0.1:8082/api/v1/test/detail")
                .then()
                .log()
                .all()
                .statusCode(200);
    }
}

Restassured框架常用方法

基礎(chǔ)語(yǔ)法格式

  • RestAssured的語(yǔ)法采用簡(jiǎn)潔的鏈?zhǔn)秸{(diào)用方式
  • given()開(kāi)始,設(shè)置測(cè)試預(yù)設(shè),包括請(qǐng)求頭、請(qǐng)求參數(shù)、請(qǐng)求體、cookie等;
  • 然后使用when()指定請(qǐng)求的URL(GET、POST等請(qǐng)求)
  • 最后使用then()進(jìn)行斷言和解析響應(yīng)結(jié)果

參數(shù)配置

  • 請(qǐng)求頭參數(shù):使用header()方法設(shè)置請(qǐng)求頭信息,例如“header(“Content-Type”, “application/json”)”。
  • 請(qǐng)求參數(shù)
    • 對(duì)于GET請(qǐng)求,使用“param()”方法設(shè)置URL參數(shù),例如“param(“key”, “value”)”;
    • 對(duì)于POST請(qǐng)求,可以使用“body()”方法設(shè)置請(qǐng)求體內(nèi)容
  • 文件上傳
    • 提供multiPart() 的方法可以指定文件(file)、字節(jié)數(shù)組(byte-array)、輸入流或者是上傳文件

示例

  • GET 請(qǐng)求
    • log()可以向控制臺(tái)輸出返回的信息
    • log().all() 可以返回所有響應(yīng)中的數(shù)據(jù)
 	@Test
    public void testBase() {
        RestAssured.given()
                .queryParam("id", 1)
                .when()
                .get("http://127.0.0.1:8082/api/v1/test/detail")
                .then()
                .log().all()
                .statusCode(200);
    }
  • POST方式form表單
 	@Test
    public void testPostForm(){
        RestAssured.given()
                .formParam("mail", "1320801376@sina.com")
                .formParam("pwd","123456")
                .when()
                .post("http://127.0.0.1:8082/api/v1/test/login_form")
                .then()
                .log().all()
                .statusCode(200);
    }
  • POST方式j(luò)son+header
    @Test
    public void testPostJsonHeader(){
        Map<String,String> params = new HashMap<>();
        params.put("title","山海經(jīng)傳奇");
        RestAssured.given()
                .header("token","7a9b7dcbba2443c5a80fbfa62da63e69")
                //.header("Content-Type","application/json")
                .contentType(ContentType.JSON)
                .body(JsonUtil.obj2Json(params))
                .when()
                .post("http://127.0.0.1:8082/api/v1/test/buy")
                .then()
                .log()
                .all()
                .statusCode(200);
  • 文件上傳
    @Test
    public void testFile(){
        RestAssured.given()
                .multiPart(new File("/Users/xdclass/Desktop/測(cè)試jmx/id.csv"))
                .when()
                .post("http://127.0.0.1:8082/api/v1/test/upload")
                .then()
                .log().all()
                .statusCode(200);
    }

斷言與解析

響應(yīng)斷言

  • 使用statusCode()方法指定期望的響應(yīng)狀態(tài)碼,例如statusCode(200);
  • 還可以使用body()方法對(duì)響應(yīng)內(nèi)容進(jìn)行斷言,例如body("key", equalTo("value"))
類(lèi)型斷言方法含義
狀態(tài)碼statusCode()響應(yīng)狀態(tài)碼
響應(yīng)頭header()響應(yīng)頭信息
內(nèi)容body()內(nèi)容匹配

內(nèi)置結(jié)果解析

  • 自帶GPath解析
    • 是來(lái)自groovy 編程語(yǔ)言的廣泛使用的 XML 和 JSON 解析器 GPath可以處理html、xml、json
    • 跟JSONpath的區(qū)別就是不需要從$開(kāi)始寫(xiě)了,GPATH直接從JSON消息的第一層數(shù)據(jù)開(kāi)始
    • 通過(guò) extract().response() 將響應(yīng)結(jié)果保存到 Response 類(lèi)型的變量,使用Gpath提取響應(yīng)中的某一個(gè)具體的數(shù)據(jù)
      • 提取JSON:res.jsonPath().get(“XXX.XXX.XXX”);
      • 提取xml:res.xmlPath().get(“XXX.XXX.XXX”);
      • 提取HTML:res.htmlPath().get(“XXX.XXX.XXX”);
  • JSON解析
    • 支持對(duì)JSON格式的響應(yīng)數(shù)據(jù)進(jìn)行解析,可以使用jsonPath()方法指定JSON路徑進(jìn)行查詢(xún)和斷言。
  • XML解析
    • 支持對(duì)XML格式的響應(yīng)數(shù)據(jù)進(jìn)行解析,可以使用xmlPath()方法指定XML路徑進(jìn)行查詢(xún)和斷言。

示例

斷言測(cè)試

    @Test
    public void testAssert(){
        Map<String,String> params = new HashMap<>();
        params.put("title","山海經(jīng)傳奇");
        RestAssured.given()
                .header("token","7a9b7dcbba2443c5a80fbfa62da63e69")
                .header("Content-Type","application/json")
                .body(JsonUtil.obj2Json(params))
                .when()
                .post("http://127.0.0.1:8082/api/v1/test/buy")
                .then()
                .log()
                .all()
                .statusCode(200)
                .body("code", equalTo(1));
    }

結(jié)果解析

    @Test
    public void testResponse(){
        Map<String,String> params = new HashMap<>();
        params.put("title","山海經(jīng)傳奇");
        Response response = RestAssured.given()
                .header("token", "7a9b7dcbba2443c5a80fbfa62da63e69")
                //.header("Content-Type","application/json")
                .contentType(ContentType.JSON)
                .body(JsonUtil.obj2Json(params))
                .log().headers()//打印請(qǐng)求頭
                .log().body()//打印請(qǐng)求體
                .when()
                .post("http://127.0.0.1:8082/api/v1/test/buy")
                .then()
                .log()
                .all()
                .statusCode(200).extract().response();
        Object data = response.jsonPath().get("data");
        System.out.println(data);
    }

總結(jié) 

到此這篇關(guān)于Java接口測(cè)試框架Restassured介紹及常用方法的文章就介紹到這了,更多相關(guān)Java接口測(cè)試框架Restassured內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Myeclipse 2016下Aptana安裝教程

    Myeclipse 2016下Aptana安裝教程

    這篇文章主要為大家詳細(xì)介紹了Myeclipse 2016下Aptana安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 使用Java實(shí)現(xiàn)qq郵箱發(fā)送郵件

    使用Java實(shí)現(xiàn)qq郵箱發(fā)送郵件

    這篇文章主要為大家詳細(xì)介紹了使用Java實(shí)現(xiàn)qq郵箱發(fā)送郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2010-05-05
  • Java中的Switch?Case語(yǔ)句及示例詳解

    Java中的Switch?Case語(yǔ)句及示例詳解

    Java中的SwitchCase語(yǔ)句用于處理多個(gè)選項(xiàng),本文結(jié)合實(shí)例代碼給大家介紹Java中的Switch?Case語(yǔ)句及示例,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • java web上傳文件和下載文件代碼片段分享

    java web上傳文件和下載文件代碼片段分享

    這篇文章主要為大家詳細(xì)介紹了java web上傳文件和下載文件代碼片段,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • APT?注解處理器實(shí)現(xiàn)?Lombok?常用注解功能詳解

    APT?注解處理器實(shí)現(xiàn)?Lombok?常用注解功能詳解

    這篇文章主要為大家介紹了使用APT?注解處理器實(shí)現(xiàn)?Lombok?常用注解功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 對(duì)象轉(zhuǎn)Json字符串時(shí)如何忽略指定屬性

    對(duì)象轉(zhuǎn)Json字符串時(shí)如何忽略指定屬性

    這篇文章主要介紹了對(duì)象轉(zhuǎn)Json字符串時(shí)如何忽略指定屬性,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 一文帶你深入了解Java?TreeMap

    一文帶你深入了解Java?TreeMap

    TreeMap是Map家族中的一員,也是用來(lái)存放key-value鍵值對(duì)的。平時(shí)在工作中使用的可能并不多。本文將基于jdk8對(duì)其做一個(gè)講解,感興趣的可以了解一下
    2022-09-09
  • SpringCloud網(wǎng)關(guān)Gateway架構(gòu)解析

    SpringCloud網(wǎng)關(guān)Gateway架構(gòu)解析

    這篇文章主要介紹了SpringCloud網(wǎng)關(guān)Gateway架構(gòu)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java面試之高級(jí)特性基礎(chǔ)總結(jié)

    Java面試之高級(jí)特性基礎(chǔ)總結(jié)

    這篇文章主要為大家詳細(xì)介紹了10個(gè)Java高級(jí)特性基礎(chǔ)相關(guān)的問(wèn)題,也是大家面試中常常會(huì)遇到的問(wèn)題。文中的示例代講解詳細(xì),感興趣的可以了解一下
    2023-01-01
  • Java面向?qū)ο筮x擇題總結(jié)歸納

    Java面向?qū)ο筮x擇題總結(jié)歸納

    今天小編就為大家分享一篇關(guān)于Java面向?qū)ο筮x擇題總結(jié)歸納,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01

最新評(píng)論

扎兰屯市| 波密县| 全椒县| 尚义县| 永城市| 禹州市| 延庆县| 嫩江县| 中方县| 富蕴县| 宁国市| 桦川县| 阿拉善右旗| 白朗县| 千阳县| 皋兰县| 正镶白旗| 庄河市| 屏边| 静安区| 新民市| 柯坪县| 岢岚县| 志丹县| 东乌| 中宁县| 新源县| 德化县| 塘沽区| 云南省| 连云港市| 长泰县| 准格尔旗| 错那县| 阳城县| 乃东县| 讷河市| 凉山| 庄浪县| 凯里市| 金秀|