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