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

Java基于rest assured實(shí)現(xiàn)接口測(cè)試過(guò)程解析

 更新時(shí)間:2020年03月13日 13:11:11   作者:李福春  
這篇文章主要介紹了Java基于rest assured實(shí)現(xiàn)接口測(cè)試過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

背景

java程序員一般寫的是后端服務(wù)是JavaWeb類型的項(xiàng)目,主要包括Http接口和dubbo接口,Http接口一般采用的rest風(fēng)格,那么如何快速的對(duì)rest接口在第三方的測(cè)試框架上進(jìn)行測(cè)試呢?

rest-assured框架是一個(gè)不錯(cuò)的工具。

使用之前,需要熟悉一下最基礎(chǔ)的使用方法,在寫完幾個(gè)接口的測(cè)試用例之后,好比你可以使用你的三棱軍刺熟練的進(jìn)行基礎(chǔ)的攻擊了。

快速的來(lái)一個(gè)hello world吧!

假設(shè)你寫了一個(gè)接口:lotto,訪問(wèn)路徑是: http://localhost:8080/lotto

接口返回值是:

{
"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]
 }]
}
}

如何快速的驗(yàn)證接口是否返回正常值呢?

get("/lotto").then().body("lotto.winners.winnerId", hasItems(23, 54));

使用簡(jiǎn)單吧!

引入

不多說(shuō),直接maven的方式引入:注意,我直接按照默認(rèn)的scope引入的,不是test;

主要引入以下2個(gè)依賴,原因如下:

rest-assured: 主要測(cè)試基本的http的rest風(fēng)格接口,這個(gè)是最基礎(chǔ)的依賴;

json-path: 主流的接口主要返回json,對(duì)接口進(jìn)行測(cè)試用例測(cè)試,主要也是判斷json返回某路徑下的數(shù)據(jù);

<dependency>
   <groupId>io.rest-assured</groupId>
   <artifactId>rest-assured</artifactId>
   <version>4.2.0</version>
</dependency>
<dependency>
   <groupId>io.rest-assured</groupId>
   <artifactId>json-path</artifactId>
   <version>4.2.0</version>
</dependency>

然后你就可以愉快的編寫測(cè)試用例,然后使用rest-assured進(jìn)行接口測(cè)試了。

使用要點(diǎn)

先上簡(jiǎn)單代碼吧!

先準(zhǔn)備測(cè)試數(shù)據(jù):

 final TestCaseDataModel<LoginRestReq> testCaseDataModel = new TestCaseDataModel<>();

    final LoginRestReq loginRestReq = LoginRestReq.builder()
        .appId("2a6bf452219cfe44c7f78231e3c80a13072b6727")
        .nonce("123456")
        .timestamp(System.currentTimeMillis())
        .userId("lxlifuchun")
        .userName("李福春")
        .build();
    String appSecret = "91e47f584dae551170ade272b2c7a69f";
    loginRestReq.setChecksum(SignUtils.generateCheckSum(loginRestReq.getAppId(), appSecret, loginRestReq.getTimestamp(), loginRestReq.getNonce()));

    testCaseDataModel.setInputParam(loginRestReq);


    ExpectModel expectModel = new ExpectModel();
    expectModel.setPath("data.id");
    expectModel.setMatcher(Matchers.lessThan(0));

    testCaseDataModel.setExpectResult(Arrays.asList(expectModel));
RestAssured.baseURI = "https://rest-beta.xxx.com";
  final ValidatableResponse validatableResponse = given().contentType(ContentType.JSON)
        .header("requestId", UUID.randomUUID().toString())
        .body(testCaseData.getInputParam()).
            post("/user_service/user/login")
        .then().contentType(ContentType.JSON);


  for (Object obj : testCaseData.getExpectResult()) {
      ExpectModel item = (ExpectModel) obj;
      validatableResponse.body(item.getPath(), item.getMatcher());
    }

做的事情很簡(jiǎn)單,就是拿一個(gè)登錄接口來(lái)實(shí)際的試一下:

login接口接受一個(gè)json的參數(shù),LoginRestReq對(duì)下轉(zhuǎn)換之后得到;
然后返回?cái)?shù)據(jù),數(shù)據(jù)中有一個(gè)用戶id,路徑是 data.id,如果id大于0,標(biāo)識(shí)登錄操作成功,登錄接口正常。

很好的完成了接口的測(cè)試,如果失敗,會(huì)拋出錯(cuò)誤,捕獲錯(cuò)誤,然后輸出信息,標(biāo)識(shí)測(cè)試用例不通過(guò),提示到界面或者發(fā)送郵件給到開(kāi)發(fā)人員,即完成了接口的自動(dòng)化測(cè)試。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Boot 部署過(guò)程解析(jar or war)

    Spring Boot 部署過(guò)程解析(jar or war)

    這篇文章主要介紹了Spring Boot 部署過(guò)程解析(jar or war),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Java 程序里transient關(guān)鍵字使用方法示例

    Java 程序里transient關(guān)鍵字使用方法示例

    這篇文章主要為大家介紹了Java 程序里transient關(guān)鍵字使用方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Java多線程 Callable、Future 和FutureTask

    Java多線程 Callable、Future 和FutureTask

    這篇文章主要介紹Java多線程中的 Callable、Future 以及FutureTask,下面文章圍繞Java多線程的相關(guān)資料展開(kāi)全文詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-10-10
  • SpringBoot實(shí)現(xiàn)權(quán)限驗(yàn)證的示例步驟

    SpringBoot實(shí)現(xiàn)權(quán)限驗(yàn)證的示例步驟

    權(quán)限驗(yàn)證是一種用于控制對(duì)系統(tǒng)資源和操作的訪問(wèn)的機(jī)制。它允許開(kāi)發(fā)人員定義誰(shuí)可以執(zhí)行特定操作或訪問(wèn)特定資源,并確保只有經(jīng)過(guò)授權(quán)的用戶才能執(zhí)行這些操作,這篇文章主要介紹了SpringBoot實(shí)現(xiàn)權(quán)限驗(yàn)證,需要的朋友可以參考下
    2023-08-08
  • SpringBoot整合POI導(dǎo)出通用Excel的方法示例

    SpringBoot整合POI導(dǎo)出通用Excel的方法示例

    這篇文章主要介紹了SpringBoot整合POI導(dǎo)出通用Excel的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Spring+SpringMVC+MyBatis深入學(xué)習(xí)及搭建(三)之MyBatis全局配置文件解析

    Spring+SpringMVC+MyBatis深入學(xué)習(xí)及搭建(三)之MyBatis全局配置文件解析

    這篇文章主要介紹了Spring+SpringMVC+MyBatis深入學(xué)習(xí)及搭建(三)之MyBatis全局配置文件解析,需要的朋友可以參考下
    2017-05-05
  • Java的Hello World詳解

    Java的Hello World詳解

    當(dāng)我們學(xué)習(xí)一門編程語(yǔ)言的時(shí)候,我們都會(huì)先學(xué)如何輸出Hello World!本文通過(guò)幾個(gè)例子給大家介紹輸出Hello World的代碼,感興趣的朋友一起看看吧
    2021-09-09
  • 解讀jdk動(dòng)態(tài)代理為什么必須實(shí)現(xiàn)接口

    解讀jdk動(dòng)態(tài)代理為什么必須實(shí)現(xiàn)接口

    這篇文章主要介紹了解讀jdk動(dòng)態(tài)代理為什么必須實(shí)現(xiàn)接口問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 淺析fastjson2時(shí)間序列化和反序列化的簡(jiǎn)單使用

    淺析fastjson2時(shí)間序列化和反序列化的簡(jiǎn)單使用

    在項(xiàng)目中將fastjson升級(jí)為fastjson2后,我們遇到了一些與fastjson不完全兼容的問(wèn)題,所以本文就來(lái)探討下fastjson2的時(shí)間序列化和反序列化的簡(jiǎn)單使用吧
    2025-01-01
  • java中volatile關(guān)鍵字的作用與實(shí)例代碼

    java中volatile關(guān)鍵字的作用與實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于java中volatile關(guān)鍵字的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評(píng)論

碌曲县| 榕江县| 上虞市| 信宜市| 延安市| 庄浪县| 清苑县| 金平| 舟曲县| 天柱县| 莲花县| 东港市| 宣化县| 祁连县| 井研县| 桓台县| 南汇区| 西安市| 浮梁县| 洛南县| 商丘市| 新宾| 安宁市| 衢州市| 福贡县| 长汀县| 丘北县| 启东市| 璧山县| 阜城县| 南乐县| 台北市| 建宁县| 武鸣县| 德令哈市| 石棉县| 石嘴山市| 林州市| 富源县| 甘肃省| 连山|