我自动执行搜索功能,并希望对其执行数据驱动测试。我使用Excel工作表来存储测试数据并使用Apache POI库来读取相同的数据。这就是testdata存储的方式。
我的框架中有一个公共类来读取excel文件中的数据,我必须在调用下面提到的方法时传递工作表编号:
public ArrayList<String> getAllData(int sheetNumber)
{
list=new ArrayList<String>();
sheet = workbook.getSheetAt(sheetNumber);
for(int i=1;i<=sheet.getLastRowNum();i++)
{
for(int j=0;j<sheet.getRow(i).getLastCellNum();j++)
{
System.out.println(sheet.getRow(i).getCell(j).getStringCellValue());
list.add(sheet.getRow(i).getCell(j).getStringCellValue());
}
}
return list;
}
我在调用函数中如何使用这些数据时遇到了麻烦。不知怎的,我可以像我一样管理我的水平:
@Test
public void searchRcontacts() throws IOException, InterruptedException
{
LoginAnalyser.checkLogin();
if(!(driver.getCurrentUrl().equals(PropertyFileReader.getProperty("dashboardURL"))))
{
driver.get(PropertyFileReader.getProperty("dashboardURL"));
CommonMethods.waitUntilLoaderGetInvisible(driver);
}
//Calling the method from ExcelReader class
Iterator<String> itr=excel.getAllData(7).iterator();
while(itr.hasNext())
{
contacts.enterSearchText(itr.next());
TakeScreenshot.passedScreenShot("Search_");
LogWriter.logger.info("Search Text enterd");
contacts.clickSearchButton();
CommonMethods.waitUntilLoaderGetInvisible(driver);
LogWriter.logger.info("Search button clicked");
TakeScreenshot.passedScreenShot("Search_Result_For");
assertEquals(contacts.getSearchResult(),itr.next());
LogWriter.logger.info("Result : "+contacts.getSearchResult());
}
}
但它似乎并不是一种有效的方法。有人可以提出更好的方法吗?
答案 0 :(得分:0)
考虑使用诸如Cucumber或JBehave之类的BDD方法。在您的示例中,可以创建一个故事:
Scenario: Positive tests
Given I am on the search page
When I enter <testdata>
Then the record is found
Examples:
|testdata |
|narrendra |
|9422320101|
|jec |
Scenario: Negative tests
Given I am on the search page
When I enter <testdata>
Then the record is not found
Examples:
|testdata|
|Alex$ |
|Mac100 |
对于JBehave,您也可以将示例数据放在单独的文件中,并使用:
Examples:
.\tables\storyPosTestData.txt