Rest-Assured 是一个测试 Restful Web Service 的 Java 类库,我们能够测试各种各样的请求组合,依次测试核心业务逻辑的不同组合。
它是通过发送特定的rest api,通过服务器返回的HTTP响应,来做功能性测试。
REST API的概念
REST API就是符合REST风格,要了解REST API首先需要弄清楚REST风格的具体含义。REST的全称是Representational State Transfer,中文是表述性状态转移,这个是什么意思等会再解释,先说明为什么会出现REST,以及它对整个网络服务API发展的重要性。
在互联网服务刚刚起步的时候,网页大部分是静态的,用户与服务器之间的交互比较少,但是随着动态网页的发展,操作的种类也越来越繁复,接口冗余且复杂,开发难度大大提升,扩展困难,而且网络traffic的负担也增大了。针对这些问题,2000年一篇论文提出了REST这个设计理念。REST的宗旨是从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表征。REST与平台、语言等均无关,但是目前仅有HTTP是REST的实现案例。
REST使用URL来定位资源,通过HTTP动作来表述操作,如
GET:http://www.TEST.com/users/user
POST:http://www.TEST.com/users
HTTP动作常用的是PUT、POST、GET和DELETE,分别对应着对资源的更新、插入、获取和删除操作。数据是保存在Headers中传输的,其中PUT还有数据在Body中传输。
REST是无状态的,即前一次的动作对后一次的动作是没有影响的,在HTTP应用中,无状态即不能使用Session。
REST-Assured实例
通过Maven引入:
通过HTTP动作获得请求,在对请求进行断言判断,来完成一系列集成测试。例如:
RestAssured.requestSpecification =
new RequestSpecBuilder().addHeaders(“token”,”xxx”).build();
通过given()设置HTTP动作和附带的参数,例如:
given().contentType("application/json")
.pathParam("organizationId",orgId)
.body(data)
.when().post("/v1/organizations/{organizationId}/users");
传入键值对通常使用map传递,可以通过工具类转换成json等格式,如JSON.toJSONString(map)。
每一次完成后需要RestAssured.reset();来重置状态,避免影响其它的测试用例。
对于返回的response的内容,比如对body中的数据进行验证,可以使用body("id", equalTo(2)),或者使用包装好的Assert方法进行验证。
刚刚学习这方面的知识,内容可能有错误,希望在以后的学习中,逐渐完善自己的知识,并且不断改进。