【问题标题】:How can I use then() block with RestAssured while using POJO classes?如何在使用 POJO 类时将 then() 块与 RestAssured 一起使用?
【发布时间】:2020-02-25 15:24:02
【问题描述】:

在开发 RestAssured 时,我遇到了序列化和反序列化(POJO 类)的概念来读取和验证响应。我浏览了一些教程,并能够根据我的回复创建 POJO 类。

但是,当我在测试中使用 POJO 类引用时,我无法将 then() 块用于不同的断言。下面的细节可能会更清楚一些:

没有 POJO 的测试方法:

public void listUsers() {
        RestAssured.baseURI="https://reqres.in/";

        Response res = RestAssured.given()
        .contentType("application/json")
        .queryParam("page", 2)
        .when()
        .get("/api/users")
        .then()
        .assertThat().statusCode(200).and()
        .body("page", Matchers.equalTo(2)).and()
        .body("total", Matchers.greaterThanOrEqualTo(1))
        .body("data.email", Matchers.hasItem("george.edwards@reqres.in"))
        .extract().response();
        JsonPath jsonpath = new JsonPath(res.asString());
        System.out.println(jsonpath.get("data[0].email"));

    }

使用 POJO 的测试方法:

public void listUserswithPOJO() {
        RestAssured.baseURI="https://reqres.in/";

        ListUsers res = RestAssured.given()
        .contentType("application/json")
        .queryParam("page", 2)
        .when()
        .get("/api/users").as(ListUsers.class);

        System.out.println(res.getData().get(1).getEmail());

    }

测试类:

@Test
    public void listUsersTest() {
        ReqResApi TS1 = new ReqResApi();
        TS1.listUserswithPOJO();
    }

我想在使用 POJO 类时保持 then 块的断言不变。当我在 as(ListUser.class) 之后尝试这样做时,它会给出编译错误,即未为 ListUser 类定义 then()。

有什么方法可以在我的放心测试中同时使用 POJO 类和 then() 块。

【问题讨论】:

    标签: rest rest-assured


    【解决方案1】:

    这是不可能的,因为这些选项的返回类型不同。

    MainPojo m1 =RestAssured.given().contentType("application/json").queryParam("page", 2).when().get("/api/users")
                    .as(MainPojo.class)==> Return Type is ur Class, in this example Main Pojo
    
            System.out.println(m1.getData().get(0).getFirst_name());
    
    
    
     RestAssured.given().contentType("application/json").queryParam("page", 2).when()
                    .get("/api/users").then().assertThat().statusCode(200).and().body("page", Matchers.equalTo(2)).and()
                    .body("total", Matchers.greaterThanOrEqualTo(1))
                    .body("data.email", Matchers.hasItem("george.edwards@reqres.in")).extract().response();---> Return Type is Response
    

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2019-11-12
      • 1970-01-01
      • 2017-01-24
      • 2015-02-02
      • 2013-10-03
      • 1970-01-01
      相关资源
      最近更新 更多