欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

背景

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

rest-assured框架是一個不錯的工具。

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

快速的來一個hello world吧!

假設(shè)你寫了一個接口:lotto,訪問路徑是: 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));

使用簡單吧!

引入

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

主要引入以下2個依賴,原因如下:

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

json-path: 主流的接口主要返回json,對接口進(jìn)行測試用例測試,主要也是判斷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>

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

使用要點(diǎn)

先上簡單代碼吧!

先準(zhǔn)備測試數(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());
    }

做的事情很簡單,就是拿一個登錄接口來實(shí)際的試一下:

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

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

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

相關(guān)文章

  • 淺析Java中如何實(shí)現(xiàn)線程之間通信

    淺析Java中如何實(shí)現(xiàn)線程之間通信

    本篇文章主要介紹了淺析Java中如何實(shí)現(xiàn)線程之間通信。針對 Java 的線程間通信進(jìn)行了大致的講解,有興趣的可以了解一下
    2017-04-04
  • Java的函數(shù)式編程詳解

    Java的函數(shù)式編程詳解

    用了這么久的Java8,我尋思這種話也好意思說出來嗎,難道自己是PythonBoy出身就是看不懂Java的理由嗎,身為一個合格的后端Boy不會還有人看不明白Java的函數(shù)式編程吧,接下來小編和大家淺聊一下Java的函數(shù)式編程,需要的朋友可以參考下
    2023-10-10
  • Java使用iTextPDF生成PDF文件的實(shí)現(xiàn)方法

    Java使用iTextPDF生成PDF文件的實(shí)現(xiàn)方法

    這篇文章主要介紹了Java使用iTextPDF生成PDF文件的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Java對象集合按照指定元素順序排序的實(shí)現(xiàn)

    Java對象集合按照指定元素順序排序的實(shí)現(xiàn)

    最近在對一個集合列表的數(shù)據(jù)進(jìn)行排序,需求是要集合數(shù)據(jù)按照一個排序狀態(tài)值進(jìn)行排序,而這個狀態(tài)值,不是按照從小到大這樣的順序排序的,而是要按照特定的順序,所以本文給大家介紹了Java對象集合按照指定元素順序排序的實(shí)現(xiàn),需要的朋友可以參考下
    2024-07-07
  • 使用Shiro實(shí)現(xiàn)登錄成功后跳轉(zhuǎn)到之前的頁面

    使用Shiro實(shí)現(xiàn)登錄成功后跳轉(zhuǎn)到之前的頁面

    這篇文章主要介紹了如何使用Shiro實(shí)現(xiàn)不同用戶登錄成功后跳轉(zhuǎn)到不同主頁,實(shí)現(xiàn)此功能目前比較好的方法是用ajax的方法登錄,第二種方法是把用戶未登錄前的url存在session中,需要的朋友可以參考下
    2015-07-07
  • java對象類型轉(zhuǎn)換和多態(tài)性(實(shí)例講解)

    java對象類型轉(zhuǎn)換和多態(tài)性(實(shí)例講解)

    下面小編就為大家?guī)硪黄猨ava對象類型轉(zhuǎn)換和多態(tài)性(實(shí)例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • MyBatis查詢數(shù)據(jù),賦值給List集合時,數(shù)據(jù)缺少的問題及解決

    MyBatis查詢數(shù)據(jù),賦值給List集合時,數(shù)據(jù)缺少的問題及解決

    這篇文章主要介紹了MyBatis查詢數(shù)據(jù),賦值給List集合時,數(shù)據(jù)缺少的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • SpringBoot使用自定義注解+AOP+Redis實(shí)現(xiàn)接口限流的實(shí)例代碼

    SpringBoot使用自定義注解+AOP+Redis實(shí)現(xiàn)接口限流的實(shí)例代碼

    這篇文章主要介紹了SpringBoot使用自定義注解+AOP+Redis實(shí)現(xiàn)接口限流,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • Nacos配置中心設(shè)計原理分析

    Nacos配置中心設(shè)計原理分析

    今天分享一下Nacos配置變更的相關(guān)知識點(diǎn),現(xiàn)在使用Java生態(tài)如果使用微服務(wù),如果部署在K8s上,那么可能會使用ConfigMap來存儲配置文件,如果沒有使用K8s,那么基本上都使用Nacos來做配置中心,所以有必要了解一下Nacos的配置的知識點(diǎn),本文只是對其中的部分實(shí)現(xiàn)原理進(jìn)行分析
    2023-10-10
  • SpringMVC中@RequestMapping注解用法實(shí)例

    SpringMVC中@RequestMapping注解用法實(shí)例

    通過@RequestMapping注解可以定義不同的處理器映射規(guī)則,下面這篇文章主要給大家介紹了關(guān)于SpringMVC中@RequestMapping注解用法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06

最新評論