【发布时间】:2021-02-03 06:43:35
【问题描述】:
我正在使用 Hash Map 读取获取 excel 数据并在方法中使用它们来执行 If...else 验证。
我正在使用类文件来初始化哈希映射以读取数据。如下图所示
public class SampleDataset {
public static HashMap<String, ArrayList<String>> main() throws IOException {
final String DatasetSheet = "src/test/resources/SampleDataSet.xlsx";
final String DatasetTab = "TestCase";
Object[][] ab = DataLoader.ReadMyExcelData(DatasetSheet, DatasetTab);
int rowcount = DataLoader.myrowCount(DatasetSheet, DatasetTab);
int colcount = DataLoader.mycolCount(DatasetSheet, DatasetTab);
HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
// i = 2 to avoid column names
for (int i = 2; i < rowcount;) {
ArrayList<String> mycolvalueslist = new ArrayList<String>();
for (int j = 0; j < colcount;) {
mycolvalueslist.add(ab[i][j].toString());
j++;
}
map.put(ab[i][0].toString(), mycolvalueslist);
i++;
}
return map;
}
我在我的测试用例文件中使用了这张地图,如下所示
@Test //Testcase
public void testThis() throws Exception {
try {
launchMainApplication();
TestMain MainPage = new TestMain(tool, test, user, application);
HashMap<String, ArrayList<String>> win = SampleDataset.main();
SortedSet<String> keys = new TreeSet<>(win.keySet());
for (String i : keys) {
System.out.println("########### Test = " + win.get(i).get(0) + " ###########");
MainPage.step01(win.get(i).get(1));
MainPage.step02(win.get(i).get(2));
}
test.setResult("pass");
} catch (AlreadyRunException e) {
} catch (Exception e) {
verificationErrors.append(e.getMessage());
throw e;
}
}
@Override
@After
public void tearDown() throws Exception {
super.tearDown();
}
我想通过为测试用例的每一行创建新列作为状态,将通过上述 FOR-LOOP 启动的所有测试用例的状态写为 PASS 或 FAIL 到同一个 excel 中
我的excel表格如下图
【问题讨论】:
-
是更新excel文件有测试状态问题,还是不知道如何获取测试状态信息?
-
我不知道如何在测试步骤中进行验证后获取状态列中的信息。
-
在 for 循环中,我尝试使用嵌入式方法测试 Step01 和 Step02,例如此处“MainPage.step01(win.get(i).get(1));”方法是 step01(字符串参数)。我正在使用 if else 来验证,我可以在结果列下的 Excel 表中编写控制台消息,但是如何?
-
所以你知道状态(如果你能写在consol里,你就知道了)和你的TC存储的行数,你只需要知道如何将它放在excell中,对吗?
-
是的,如图所示,我希望我的控制台作为测试进度连续打印在该状态列上
标签: selenium junit hashmap status data-driven-tests