2017-12-20 25 views
0

검색 기능을 자동화하고 이에 대한 데이터 기반 테스트를 수행하려고합니다. 나는 엑셀 시트를 사용하여 테스트 데이터를 저장하고 Apache POI 라이브러리를 사용하여 같은 것을 읽는다. 이것은 testdata가 저장된 방법입니다.Selenium에서 테스트 데이터를 retieve하고 사용하는 효율적인 방법이 있습니까?

enter image description here

나는 메소드를 호출하는 것은 아래 내가 시트 번호를 통과 할 경우 파일을 엑셀에서 데이터를 읽어 내 프레임 워크에서 하나 개의 공통 클래스를 언급했던 것처럼 동안 :

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()); 
     } 
} 

그러나 효율적인 방법으로 보이지 않습니다. 어떤 사람이 나에게 더 나은 방법을 제안 할 수 있습니까?

+1

당신은 데이터를 사용하여 고려할 수 있습니다 반복 및 기타 옵션을 제공하는 provider 옵션. – Murthi

+0

@ Murthi, 나는 내 문제를 해결하기 위해 하나의 파일과 하나의 공통 파일에 Excel 판독기 코드로 테스트 방법을 가지고있다. 그래서 나는 테스트 메소드에서 필요한 엑셀 데이터 리더 메소드를 호출한다. – NarendraR

+0

testng에는 데이터 제공자 클래스와 같은 옵션이있다. 테스트 메소드와 테스트 데이터 제공자를 다른 클래스로 유지할 수 있습니다. @Test (dataProviderClass = TestNGDataProvider.class, dataProvider = "testMultipleInput")와 같이 – Murthi

답변

0

오이 또는 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