0312 java接口測試三棱軍刺rest-assured

image.png

背景

java程序員通常寫的是後端服務是JavaWeb類型的項目,主要包括Http接口和dubbo接口,Http接口通常採用的rest風格,那麼如何快速的對rest接口在第三方的測試框架上進行測試呢?
rest-assured框架是一個不錯的工具。比如軍人的三棱軍刺,如上圖。
使用以前,須要熟悉一下最基礎的使用方法,在寫完幾個接口的測試用例以後,比如你可使用你的三棱軍刺熟練的進行基礎的攻擊了。java

快速的來一個hello world吧!


假設你寫了一個接口: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]
 }]
}
}

如何快速的驗證接口是否返回正常值呢?json

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

使用簡單吧!後端

引入

很少說,直接maven的方式引入:注意,我直接按照默認的scope引入的,不是test;
主要引入如下2個依賴,緣由以下:
rest-assured: 主要測試基本的http的rest風格接口,這個是最基礎的依賴;
json-path: 主流的接口主要返回json,對接口進行測試用例測試,主要也是判斷json返回某路徑下的數據;
app

<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進行接口測試了。框架

使用要點


先上簡單代碼吧!


先準備測試數據:less

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());
        }

作的事情很簡單,就是拿一個登陸接口來實際的試一下:dom

login接口接受一個json的參數,LoginRestReq對下轉換以後獲得;
而後返回數據,數據中有一個用戶id,路徑是 data.id,若是id大於0,標識登陸操做成功,登陸接口正常。maven

很好的完成了接口的測試,若是失敗,會拋出錯誤,捕獲錯誤,而後輸出信息,標識測試用例不經過,提示到界面或者發送郵件給到開發人員,即完成了接口的自動化測試。工具

小結

簡單的使用了工具rest-assured完成了接口測試,實在是一個很好用的工具。最近工做太忙,無法輸出內容豐富的文章,發一篇短小的文章吧!但願能夠幫到你! 原創不易,轉載請註明出處。

相關文章
相關標籤/搜索