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 的测试代码生成接口文档。测试

相关文章
相关标签/搜索