如何放心参数化.json文件?
Posted
技术标签:
【中文标题】如何放心参数化.json文件?【英文标题】:How to parameterize .json file in rest assured? 【发布时间】: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 的值,而是使用数据提供者或任何其他方法对它们进行参数化。任何关于相同的指针都会有所帮助。
【问题讨论】:
【参考方案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 中的注释来做到这一点。以上是关于如何放心参数化.json文件?的主要内容,如果未能解决你的问题,请参考以下文章