apache-poi - 使用 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 工作表的方法的建议。我不希望任何人给我我的问题的确切解决方案,但任何关于该方法的建议或我可以参考的任何参考都将受到高度赞赏。
解决方案
从响应中提取所需的数据,然后将其写入 Excel 工作表。使用 restAssured/JsonPath 您可以从 API 响应中提取数据。使用 apachePOI 您应该能够写入 Excel,有关详细信息,请参阅以下链接: https ://www.codejava.net/coding/how-to-write-excel-files-in-java-using-apache-poi
如果您遇到任何问题,请告诉我们
推荐阅读
- three.js - 对象缩放/scene.remove() 出现问题;
- javascript - .push 似乎没有添加到我的数组中
- android - ConstraintLayout 链上下文菜单在 Android Studio 中不再可见
- python - Pandas Series.tolist 错误地转录空白空间?
- nativescript - tns 使用特定的 sdk 运行 android
- vba - activeX 按钮可根据单元格值将工作表 1 中的一行数据复制到工作表 2
- parsing - LL(1) 解析冲突
- php - PHP将html表单输入提交到数据库
- javascript - 将 cron 格式转换为 UTC - Javascript
- javascript - React 组件(GeoJSON)不会在状态更改时重新渲染