首页 > 解决方案 > 使用 apache-poi 使​​用来自放心 json 响应的值更新 excel

问题描述

我是 Rest Assured 的新手并寻求帮助。我编写了代码来从 excel 表中读取值,并将它们作为路径参数传递给我的 Rest Assured 测试。这按预期工作。但是,在我从我发出的发布请求中获得 json 响应后,我想用响应中的值更新同一个 excel。

excel 具有称为火车号、旅程日期和各种舱位代码的列,以及其他列,例如头等舱代码、商务舱代码、标准舱位代码,它们应该显示其中的可用性等等,如下所示:

最初:

ServiceName  | Date     | A0 | A1 | A2 | ...... 45 columns

9008         |2019-07-28| 0  |  0 |  0 |....... 45 columns

测试后:

ServiceName  | Date     | A0 | A1 | A2 | ...... 45 columns

9008         |2019-07-28| 45 | 23 | 64 |....... 45 columns

我已经按照 apache-poi 文档从 excel 中读取值,并使用支持方法来读取行、列和获取单元格值。但是找不到任何建议如何使用 Json 响应中的值更新相同的 excel。

这些是我为从 excel 读取值而提出的测试和数据提供者方法

@DataProvider(name="logicalAvProvider")
String [][] getLogicalAv() throws IOException
{
    String path = "C:\\Misc\\LogAv.xlsx";
    int rownum = XLUtils.getRowCount(path, "LogAv");
    int colcount=XLUtils.getCellCount(path, "LogAv",rownum );

    String LogAvData[][] = new String[rownum-1][colcount];
    for (int i=1; i <rownum; i++ ) {
        for (int j=0; j<colcount; j++) {
            LogAvData[i-1][j] = XLUtils.getCellData(path, "LogAv", i, j);
            //System.out.println("Data is " +LogAvData[i-1][j]);
        }
    }
    return(LogAvData);
}


@Test(dataProvider="logicalAvProvider")
public void LogicalAvailablity(String ServiceName, String Date) throws IOException {

    Response res=
    given()
    //.log().all()
    .spec(reqSpec)

    .pathParams("service_name", ServiceName, "travel_date", Date)

    .when()
    .get(EndPoints.LOGICAL_AVAILABILTY)
    .then()
    .spec(resSpec)
    .extract().response();
    //.log().body();

}

这是我们在发出 post 请求后看到的那种响应。我需要在 excel 的各个列下更新可用的数字。

[
{
    "od_pair": "7015400:8727100",
    "buckets": [
        {
            "bucket": "C00",
            "original": 2,
            "available": 2
        },
        {
            "bucket": "A01",
            "original": 76,
            "available": 0
        },
        {
            "bucket": "B01",
            "original": 672,
            "available": 477
        },
        {
            "bucket": "B03",
            "original": 578,
            "available": 383
        }
]
}
]

关于使用值更新 excel 工作表的方法的建议。我不希望任何人给我我的问题的确切解决方案,但任何关于该方法的建议或我可以参考的任何参考都将受到高度赞赏。

标签: apache-poirest-assuredrest-assured-jsonpath

解决方案


从响应中提取所需的数据,然后将其写入 Excel 工作表。使用 restAssured/JsonPath 您可以从 API 响应中提取数据。使用 apachePOI 您应该能够写入 Excel,有关详细信息,请参阅以下链接: https ://www.codejava.net/coding/how-to-write-excel-files-in-java-using-apache-poi

如果您遇到任何问题,请告诉我们


推荐阅读