REST API 自动化测试利器 - rest-assured

原创
2016/07/05 18:07
阅读数 1.6K

rest-assured-logo

现在的服务器端应用,不论是企业的,还是互联网的,多数最终都将服务以 REST 服务,或者以自定义的 HTTP 服务的形式暴露出来。所以,这些项目的自动化测试也都是围绕这些接口展开的。

早先我们常用 SoapUI 这样的工具测试接口,但随着轻量的 REST 接口的流行,SoapUI 这样笨重的,基于图形界面的工具显得越来越不好用了。

自动化测试归根结底也是一个程序,所以好的代码才是王道。对于测试代码来说,简单清晰是最重要的。所以,对于 REST 或其它 HTTP 接口的测试代码来说,一个简单好用的,能调用 HTTP 接口,同时能验证结果的类库框架是十分重要的。

rest-assured 便是一个优秀的选择。早先曾被 SoapUI 糟糕的用户体验搞的焦头烂额的我不经意间发现 rest-assured 时有如清风徐面。废话不多说,看一下代码

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

展开阅读全文
打赏
1
10 收藏
分享
加载中
更多评论
打赏
0 评论
10 收藏
1
分享
返回顶部
顶部