【发布时间】:2019-07-28 17:23:43
【问题描述】:
我是 Rest Assured 的新手并寻求帮助。我已经编写了代码来从 excel 表中读取值,并将它们作为路径参数传递给我的 Rest Assured 测试。这按预期工作。但是,在我从我发出的 post 请求中获得 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();
}
这是我们在发布请求后看到的那种响应。我需要在 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-poi rest-assured rest-assured-jsonpath