REST Assured 系列汇总 之 REST Assured 8 - BDD Style
BDD(Behavior Driven Development)是敏捷软件开发流程,并非软件测试流程。它定义App应用的期望结果,从预期的用户行为角度从发。每个scenario都是以Given(前置条件 / 上下文),When(行为 / 事件执行)和Then(结果 / 输出)形式。
Rest Assured允许你用BDD模式写case。通常我们创建feature文件,以BDD的模式写scenario的步骤。但这并不意味着Rest assured支持BDD。显然我们要集成BDD框架如Cucumber结合Rest Assured实现BDD模式。
实际上,Rest Assured允许你采用BDD的风格组织你的测试脚本,使用Given,When,Then。
执行Request的前置条件:- GIVEN
例如 - 设置 Base URI, Base Path, Content Type , Request body (Payload) , cookies, headers , authentication , params etc.
执行请求 :- WHEN
例如 - 执行HTTP方法,GET, POST,PUT 等等
验证和抽取:- THEN
例如 - 验证status code, 响应数据, log, 数据抽取等等.
BDD 风格例子:
具体细节可以参考《REST Assured 4 - 第一个GET REST Assured Test》
import org.junit.Test;
import io.restassured.RestAssured;
import org.hamcrest.Matchers;
public class BDDStyleGetRequestTest {
@Test
public void GetBookingIds_VerifyStatusCode(){
//Given
RestAssured.given()
.baseUri("https://restful-booker.herokuapp.com")
// When
.when()
.get("/booking")
// Then
.then()
.statusCode(200)
.statusLine("HTTP/1.1 200 OK")
// To verify booking id at index 3
.body("bookingid[3]", Matchers.equalTo(10))
// To verify booking count
.body("bookingid.sum()", Matchers.hasSize(3));
}
}
BDD 风格static import 例子:
注意:
对于初学者,最好不要使用static import,因为它会让你困惑,不指导方法是调用自哪个类。一旦你熟练掌握了一些类的方法后,你再应用静态导入。
import org.junit.Test;
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
public class BDDStyleGetRequestWithStaticImportTest {
@Test
public void GetBookingIds_VerifyStatusCode(){
// Given
given()
.baseUri("https://restful-booker.herokuapp.com")
// When
.when()
.get("/booking")
//Then
.then()
.statusCode(200)
.statusLine("HTTP/1.1 200 OK")
// To verify booking id at index 3
.body("bookingid[3]", equalTo(3))
// To verify booking count
.body("bookingid.sum()", hasSize(10));
}
}