使用fillo,我已经设法使用fillo读取特定测试用例的数据。但是我有一个要求说需要一次执行多个测试用例。因此,根据需要读取所有行并存储在哈希映射中作为键值对。
向下,我将附加我编写的代码以读取特定的测试用例,并将其放在哈希图中。
public HashMap<String, String> extractexcelData(String TestcaseID, String sheetname) throws Exception
{
HashMap<String, String> excelhashmapvalues = new HashMap<String, String>();
Connection connect = fillo.getConnection("src/test/resources/Datatable/MasterTestdata.xlsx");
String query = " Select * from " + sheetname + " where TestcaseID='" + TestcaseID + "'";
Recordset recordset = connect.executeQuery(query);
while(recordset.next())
{
ArrayList<String> collection = recordset.getFieldNames();
int size = collection.size();
for (i = 0; i <=(size-1); i++) {
String colname = collection.get(i);
String colval = recordset.getField(colname);
excelhashmapvalues.put(colname, colval);
}
}
recordset.close();
connect.close();
return excelhashmapvalues;
}
我的Excel格式是
您可以看到正确的答案,我有8个测试用例,我需要阅读所有8个测试用例并将其放入hashmap中。需要帮助!
参考方案
您的问题是,当您处理下一个记录集时,您将覆盖映射中的值,因为您具有相同的列名。
解决方案可能是将您的数据保存在地图列表中:
List<Map<String, String>> listOfMaps = new ArrayList<>();
while(recordset.next()) {
ArrayList<String> collection = recordset.getFieldNames();
int size = collection.size();
Map<String, String> values = new HashMap<>();
for (i = 0; i <=(size-1); i++) {
String colname = collection.get(i);
String colval = recordset.getField(colname);
values.put(colname, colval);
}
listOfMaps.add(values);
}
或按列名将其保留在值列表的映射中:
Map<String, List<String>> map = new HashMap<>();
while(recordset.next()) {
ArrayList<String> collection = recordset.getFieldNames();
int size = collection.size();
for (i = 0; i <=(size-1); i++) {
String colname = collection.get(i);
String colval = recordset.getField(colname);
map.computeIfAbsent(colname, k -> new ArrayList<>()).add(colval);
}
}
Java:找到特定字符并获取子字符串 - java我有一个字符串4.9.14_05_29_16_21,我只需要获取4.9。数字各不相同,所以我不能简单地获得此char数组的前三个元素。我必须找到最正确的.并将其子字符串化直到那里。我来自Python,因此我将展示Python的实现方法。def foobar(some_string): location = some_string.rfind('.&…
Java中的“ <<”运算符 - java最喜欢的语句来自Java的Character类:(1 << Character.PARAGRAPH_SEPARATOR)) >> type PARAGRAPH_SEPARATOR是字节,type是整数。这句话中的操作员,他们做什么?如何以及在哪里可以使用这些运算符?这是oracles java.lang.Character文档。该类中…
Selenium Webdriver(Java)-查找禁用了属性=“”的元素 - java我有<input id="test" disabled="">。如何找到具有属性disable =“”的元素。附言:在这种情况下,我不需要使用ID。我想找到一个具有禁用属性的元素。我尝试使用String enbl = Login.driver.findElement(By.cssSelector("…
Java:线程池如何将线程映射到可运行对象 - java试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …
JAVA:字节码和二进制有什么区别? - javajava字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…