gpt4 book ai didi

java - 如何将测试数据作为从 YAML 文件读取的 Object[][] 进行管理?

转载 作者:行者123 更新时间:2023-12-02 01:59:31 24 4
gpt4 key购买 nike

这是我的 YAML 文件:

case 1: ["Jackson","23","Salt Lake City"]
case 2: ["Rachael","35","San Diego"]
#this will keep building and possibly have 1000 rows or so

我希望将它们全部放入一个二维数组中,如下所示:

{{"Jackson","23","Salt Lake City"},
{"Rachael","35","San Diego"}}

基本上我想在 TestNG 数据提供程序中使用这 2 组数据。

所以我将创建一个 DataProvider 方法,它将返回这个 2D 对象。使用此数据提供程序的测试方法将迭代它。首先它将获取“Jackson”数据。第二轮将采用“Rachael”数据。

我之前曾使用 Jackson 进行序列化,如下所示:

public class TestCase {
@JsonProperty("Test")
private List<String> data;

public List<String> getData() {
return data;
}

public void setData(List<String> data) {
this.data = data;
}
}

但要使其正常工作,我的 YAML 应该如下所示:

Test: ["Jackson","23","Salt Lake City"]
Test: ["Rachael","35","San Diego"]

但是 ObjectMapper 只读取最后一行。在本例中为“Rachael”行。

其实我并不关心“情况1”或“情况2”。我想编写一个方法,它将返回一个包含以下内容的 Object[][]:

{{"Jackson","23","Salt Lake City"},
{"Rachael","35","San Diego"}}

如何在我的方法中实现此目的?

我希望此方法迭代 YAML 文件的每一行,并将每一行放入位于 Object[][] 内部的数组列表中。

如果你们有更好的方法使用 YAML 管理测试数据,请告诉我。

最佳答案

如果您的数据不需要 key (情况 1、情况 2),您可以简化您的 Yaml 文件
只需更改为
- [“ jackson ”、“23”、“盐湖城”]
- [“瑞秋”,“35”,“圣地亚哥”]
然后使用 SnakeYAML 读取为 ArrayList库并转换为 Object[][]
您可以尝试 DataProvider 方法中的下一个片段

InputStream input = new FileInputStream(new File("path_to_your_file"));
ArrayList<ArrayList> list = (ArrayList<ArrayList>) new Yaml().load(input);

Object[][] data = list.stream()
.map(dataSet -> dataSet.toArray())
.toArray(Object[][]::new);

处理测试数据是自动化 QA 的常见问题。选择 YAML 文件已经是一个不错的决定。我们使用Selenium Automation Bundle因为它已经集成了测试数据的解决方案。自述文件中没有解决方案的描述,但这里是 test 的示例,这里是带有 test data 的文件示例这足以开始使用它。尽管该包使用 Groovy,但您可以毫无疑问地在 Groovy 类中编写 Java 代码。

关于java - 如何将测试数据作为从 YAML 文件读取的 Object[][] 进行管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51835394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com