【问题标题】:How to parameterize .json file in rest assured?如何放心参数化.json文件?
【发布时间】:2022-01-21 19:35:55
【问题描述】:

我是放心自动化框架的新手,所以需要帮助。我必须自动化一个简单的 API,在其中我在正文中发送请求。

given().log().all().contentType("application/json").body(payload).when().log().all().post("THE 
   POST URL").then().log().all().assertThat().statusCode(200);

我必须从 json 文件中读取请求,并且我能够成功地从 .json 文件中读取请求。但是我想参数化这些值,并且无法理解如何参数化文件。以下是示例 .json 文件:

{
"id" : 5,
"name" : "Harry"
}

我不想在这里硬编码 id 和 name 的值,而是使用数据提供者或任何其他方法对它们进行参数化。任何关于相同的指针都会有所帮助。

【问题讨论】:

    标签: json rest-assured web-api-testing


    【解决方案1】:

    使用 Rest-Assured 进行 API 测试的一个好的做法是 POJO 方法。它可以帮助您避免操作 json 文件(一种硬编码)

    第 1 步:定义 POJO

    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Person {
        private int id;
        private String name;
    }
    

    我使用 lombok 来生成详细代码。

    第 2 步:创建数据提供者方法

    @DataProvider(name = "create")
    public Iterator<Person> createData() {
        Person p1 = new Person(1, "Json");
        Person p2 = new Person(2, "James");
        Person p3 = new Person(3, "Harry");
        return Arrays.asList(p1,p2,p3).iterator();
    }
    

    第 3 步:编写测试

    @Test(dataProvider = "create" )
    void test1(Person person) {
        given().log().all().contentType(JSON)
                .body(person)
                .post("YOUR_URL")
                .then().log().all().assertThat().statusCode(200);
    }
    

    您需要在项目类路径中添加 2 个库才能使上述代码正常工作。

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.20</version>
    </dependency>
    
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.13.0</version>
    </dependency>
    

    【讨论】:

    • 很好的解决方案。如果json结构不是常量而是动态的怎么办?
    • @MansoorShaikh 如果“动态”意味着不同 API 的新 json,则为映射创建新 POJO。如果“动态”意味着只需在 json 中为相同的 API 添加/删除一些字段,那么利用 jackson lib 中的注释来做到这一点。
    猜你喜欢
    • 2014-11-10
    • 2021-10-02
    • 1970-01-01
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多