Как перебирать лист Excel с помощью поставщика данных testNG для нескольких наборов данных?

Я некоторое время работаю с TestNg, но у меня есть новый запрос, который я не могу понять.

У меня есть файл excel (sample.xls), имя листа = набор данных, который имеет следующее:

testdata1 ex1 ex2 ex3 ex4

      1   2    3 4 testdata1

testdata2 ex1 ex2 ex3 ex4

      5   6    7  8  testdata2

мой скрипт похож на этот:

import com.thoughtworks.selenium.*;

import org.junit.AfterClass;
import org.openqa.selenium.server.SeleniumServer;
import org.testng.annotations.*;

import java.io.File;
import jxl.*; 


public class DataProviderExample extends SeleneseTestCase{


    @DataProvider(name = "DP1")
    public Object[][] createData1() throws Exception{
        Object[][] retObjArr=getTableArray("test\\Resources\\Data\\sample.xls",
                "DataPool", "testdata1");
        return(retObjArr);
    }

    @Test (dataProvider = "DP1")
    public void testDataProviderExample(String ex1, 
            String ex2, String ex3, String ex4) throws Exception {    
       ///Extensive coding here but for simplicity I will just print 
            System.out.println(ex1);
            System.out.println(ex2);
            System.out.println(ex3);
            System.out.println(ex\4);
    }

    @AfterClass
    public void tearDown(){
        selenium.close();
        selenium.stop();
    } 

    public String[][] getTableArray(String xlFilePath, String sheetName, String tableName) throws Exception{
        String[][] tabArray=null;

            Workbook workbook = Workbook.getWorkbook(new File(xlFilePath));
            Sheet sheet = workbook.getSheet(sheetName); 
            int startRow,startCol, endRow, endCol,ci,cj;
            Cell tableStart=sheet.findCell(tableName);
            startRow=tableStart.getRow();
            startCol=tableStart.getColumn();

            Cell tableEnd= sheet.findCell(tableName, startCol+1,startRow+1, 100, 64000,  false);                

            endRow=tableEnd.getRow();
            endCol=tableEnd.getColumn();
            System.out.println("startRow="+startRow+", endRow="+endRow+", " +
                    "startCol="+startCol+", endCol="+endCol);
            tabArray=new String[endRow-startRow-1][endCol-startCol-1];
            ci=0;

            for (int i=startRow+1;i<endRow;i++,ci++){
                cj=0;
                for (int j=startCol+1;j<endCol;j++,cj++){
                    tabArray[ci][cj]=sheet.getCell(j,i).getContents();
                }
            }


        return(tabArray);
    }


}//end of class

Мой вопрос: как мне изменить этот сценарий, чтобы мой сценарий проходил через оба набора данных из листа Excel. Прямо сейчас скрипт обрабатывает первый набор данных (ячейки внутри testdata1). Я тоже хочу пройти через testdata2. Результат, который я ищу:

1 2 3 4

5 6 7 8

Спасибо


person user2034602    schedule 02.02.2013    source источник


Ответы (1)


Ничего не изменить в скрипте. Измените данные теста Excel, как показано на рисунке.

введите здесь описание изображения

person Thyagu    schedule 08.05.2014