当前位置: 首页 > 知识库问答 >
问题:

在使用POJO类时,如何将then()块与RestAssured一起使用?

冯奇思
2023-03-14

在处理restasured时,我遇到了序列化和反序列化(POJO类)的概念来读取和验证响应。我阅读了一些教程,并根据我的回答创建了POJO类。

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

不带POJO的TestMethod:

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类时,我也希望保持然后块的断言不变。当我在as(ListUser.class)之后尝试这样做时,它会给出编译错误,即ListUser类的然后()是未定义的。

在我的rest-assured测试中,是否有任何方法可以同时使用POJO类和then()块。

共有1个答案

窦凯定
2023-03-14

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

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
 类似资料:
  • 问题内容: 我试图将Python 3程序反向移植到2.7,但遇到了一个奇怪的问题: 根据文档,返回Unicode文本的内存流。当我尝试手动输入Unicode字符串时,它可以正常工作。为什么即使所有写入的字符串都是Unicode字符串,它也无法与模块结合使用?在什么地方来,它使得异常? (我知道我可以代替使用,但是我想知道在这种情况下怎么了) 问题答案: Python 2.7模块不支持Unicode

  • 我想从Log4j 1.x迁移到Log4j 2.x。所以我尝试使用Log4j-1.2-api。jar,如本文所述。我的应用程序实现了org.apache.log4j.spi。LoggingEvent,但我找不到将LoggingEvent与log4j 2.x api桥一起使用的方法。我是否可以将LoggingEvent与log4j 2.2一起使用? 谢谢。

  • 有一个只有exports子句的src/main/java/module-info.java。 有一个src/test/java/example/sometest/addertest,它具有: 到目前为止还不错。现在我使用@ExtendWith注释。 哪里 现在mvn测试给出错误 [警告].../AdderTest.java:[9,2]未导出模块中的类org.junit.jupiter.api.ex

  • 问题内容: 这是课程: 现在,我试图从类中“反射”此方法: 问题答案: 只有一个。 另一种选择是。 其他原语也是如此。

  • 我在Ubuntu 14.04中安装了phpbrew以使用PHP5.4。它工作得很好,但当我尝试使用composer时除外,composer会忽略phpbrew并安装与PHP5.5相关的依赖项。 有没有办法强制composer与phpbrew config兼容?我试图在我的作曲家中添加:php:“5.4”。json,但是它说这个要求在我的php版本中是不可能的。