Héc*_*tor 17 json rest-assured
我有一个返回JSON的端点,如:
[
{"id" : 4, "name" : "Name4"},
{"id" : 5, "name" : "Name5"}
]
Run Code Online (Sandbox Code Playgroud)
和DTO课程:
public class FooDto {
public int id;
public String name;
}
Run Code Online (Sandbox Code Playgroud)
现在,我正在以这种方式测试返回的json数组的长度:
@Test
public void test() {
FooDto[] foos = RestAssured.get("/foos").as(FooDto[].class);
assertThat(foos.length, is(2));
}
Run Code Online (Sandbox Code Playgroud)
但是,有没有办法在没有强制转换为FooDto数组的情况下执行此操作?像这样的东西:
@Test
public void test() {
RestAssured.get("/foos").then().assertThat()
.length(2);
}
Run Code Online (Sandbox Code Playgroud)
Héc*_*tor 46
解决了!我这样解决了这个问题:
@Test
public void test() {
RestAssured.get("/foos").then().assertThat()
.body("size()", is(2));
}
Run Code Online (Sandbox Code Playgroud)
你可以简单地调用size()你的身体路径:
喜欢:
given()
.accept(ContentType.JSON)
.contentType(ContentType.JSON)
.auth().principal(createPrincipal())
.when()
.get("/api/foo")
.then()
.statusCode(OK.value())
.body("bar.size()", is(10))
.body("dar.size()", is(10));
Run Code Online (Sandbox Code Playgroud)
有办法。我用下面的方法解决了
@Test
public void test() {
ValidatableResponse response = given().when().get("/foos").then();
response.statusCode(200);
assertThat(response.extract().jsonPath().getList("$").size(), equalTo(2));
}
Run Code Online (Sandbox Code Playgroud)
使用放心3.0.0
我用 GPath 解决了类似的任务。
Response response = requestSpec
.when()
.get("/new_lesson")
.then()
.spec(responseSpec).extract().response();
Run Code Online (Sandbox Code Playgroud)
现在我可以将响应正文提取为字符串并使用内置的 GPath 功能
String responseBodyString = response.getBody().asString();
assertThat(from(responseBodyString).getList("$").size()).isEqualTo(YOUR_EXPECTED_SIZE_VALUE);
assertThat(from(responseBodyString).getList("findAll { it.name == 'Name4' }").size()).isEqualTo(YOUR_EXPECTED_SUB_SIZE_VALUE);
Run Code Online (Sandbox Code Playgroud)
有关完整示例,请参阅http://olyv-qa.blogspot.com/2017/07/restassured-short-example.html
小智 5
为了获得尺寸,您需要执行此操作。
Response response =
given()
.header("Accept","application/json")
.when()
.get("/api/nameofresource")
.then()
.extract()
.response();
Run Code Online (Sandbox Code Playgroud)
收到响应后,您可以执行以下操作来获取尺寸。
int size = response.jsonPath().getList("id").size();
希望这可以帮助。:)
| 归档时间: |
|
| 查看次数: |
17198 次 |
| 最近记录: |