REST API 自動化測試利器 - rest-assured

rest-assured-logo

如今的服務器端應用,不管是企業的,仍是互聯網的,多數最終都將服務以 REST 服務,或者以自定義的 HTTP 服務的形式暴露出來。因此,這些項目的自動化測試也都是圍繞這些接口展開的。java

早先咱們經常使用 SoapUI 這樣的工具測試接口,但隨着輕量的 REST 接口的流行,SoapUI 這樣笨重的,基於圖形界面的工具顯得愈來愈很差用了。git

自動化測試歸根結底也是一個程序,因此好的代碼纔是王道。對於測試代碼來講,簡單清晰是最重要的。因此,對於 REST 或其它 HTTP 接口的測試代碼來講,一個簡單好用的,能調用 HTTP 接口,同時能驗證結果的類庫框架是十分重要的。github

rest-assured 即是一個優秀的選擇。早先曾被 SoapUI 糟糕的用戶體驗搞的焦頭爛額的我不經意間發現 rest-assured 時有如清風徐面。廢話很少說,看一下代碼json

import static io.restassured.RestAssured.get;
import static io.restassured.path.json.JsonPath.from;
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
 
public class DemoTest {
    public static final String API = "http://xxxxx";
 
    @Test
    public void demo() throws Exception {
        get(API)
                .then()
                .assertThat()
                .body(containsString("hello"));
 
        String jsonBody = get(API)
                .andReturn()
                .body()
                .asString();
 
        assertThat(from(jsonBody).get("data.list[0].value"), is("world"));
    }
}

上面的接口,返回值什麼的打了些碼,可是不影響代碼理解。數組

寫了兩個 case,第一個其實只是驗證 API 對應的接口的返回值裏帶有 "hello" 字符串。服務器

第二個case使用了 JSON Path,驗證返回的 JSON 中的 data 字段中的 list 數組中的第一個元素的 value 字段等於 world。框架

更多的使用方式就參照 https://github.com/rest-assured/rest-assured工具

BTW,從 1.1.0 版本開始,Spring REST Docs 能夠根據 rest-assured 的測試代碼生成接口文檔。測試

相關文章
相關標籤/搜索