2013-03-06 28 views
0

我最初的要求是,我有兩個Excel表如何通過從不同的Excel工作表具有不同的數據的數據到測試中硒

1個表包含姓,姓 第二片包含公司,電子郵件

我有兩個表的數據結合起來,並通過它來測試和試驗應採取

首套....名字,姓氏,公司,電子郵件。 第二組..名字,姓氏,公司,電子郵件..

,直到在Excel工作表中存在的數據。這裏 問題,同時通過我必須通過四項參數,但在Excel工作表2個參數的參數...

需要幫助......

================================= ================================================== ================

public Object [] [] dataDetails()拋出BiffException,IOException拋出{

String pathofExcel="D:\\Test-Excel3.xls"; 
    String sheetName="test"; 

    Generics gen=new Generics(); 
    String employeeDetails[][]=gen.excelRead(pathofExcel, sheetName); 


    return employeeDetails; 
} 

public Object[][] dataDetails2() throws BiffException, IOException{ 

    String pathofExcel="D:\\Test-Excel4.xls"; 
    String sheetName="test"; 

       Generics gen=new Generics(); 
    String employeeDetailss[][]=gen.excelRead(pathofExcel, sheetName); 

    return employeeDetailss; 
} 

     @DataProvider(name="enterformDetails") 
public Object[][] dp() throws BiffException, IOException { 
     List<Object[]> result = Lists.newArrayList(); 
     result.addAll(Arrays.asList(dataDetails())); 
     result.addAll(Arrays.asList(dataDetails2())); 
     return result.toArray(new Object[result.size()][]); 
    } 



@Test(dataProvider="enterformDetails") 
public void employDetails(String FName,String LastName,String Comp,String Email){ 
    EmpDetails emp=new EmpDetails(); 
    emp.enterDetails(FName, LastName, Comp,Email); 

    } 

在此先感謝..

+0

你如何將哪個姓氏名字與哪個電子郵件公司結合起來? – 2013-03-07 08:48:02

回答

0

我想你需要的是一個數據提供程序會讀取這2個文件,並返回一個迭代的值由這兩個文件合併。

@DataProvider 
    public CSVIterator1 genericDataProvider(){ 

    File input1 = new File("c:\\file1.csv"); 
    File input2 = new File("c:\\file2.csv"); 

    return new CSVIterator1(input1,input2); 


} 




@Test(dataProvider ="genericDataProvider") 
public void test1(String s1 , String s2, String i1, String i2){ 



} 

而你爲我們的需要實現Iterator接口。這是一個CSV迭代器。你可以實現一個Excel迭代器。你只是明白了。

public class CSVIterator1 implements Iterator{ 

String line1; 
String line2; 
BufferedReader rdr1; 
BufferedReader rdr2; 

CSVIterator1(File input1 ,File input2){ 

    try { 
     rdr1 = new BufferedReader(new FileReader(input1)); 
     rdr2 =new BufferedReader(new FileReader(input2)); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 



} 

@Override 
public boolean hasNext() { 

    try { 
     if((line1 = rdr1.readLine()) != null && (line2 = rdr2.readLine()) != null){ 
      return true; 
     } 

     // TODO Auto-generated method stub 

    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    return false; 
} 



@Override 
public void remove() { 
    // TODO Auto-generated method stub 

} 



@Override 
public Object next() { 

    if(line1 !=null && line2 !=null){ 

     return genParams(line1,line2); 

    } 

    // TODO Auto-generated method stub 
    return null; 
} 



public Object[] genParams(String line1 , String line2){ 

    String combined = line1+","+line2; 


    StringTokenizer st = new StringTokenizer(combined, ","); 
    Object[] result = new Object[st.countTokens()]; 
    int i=0; 
    while(st.hasMoreTokens()){ 

     result[i] = st.nextElement(); 
     i++; 
    } 

    return result; 
} 

}

0

我會建議,創建XLS文件和地圖根據輸入使用該地圖使用地圖鍵來獲取數據。它只會在你創建一個地圖之前在你的腳本的任何地方使用這個地圖。如果你這樣做,那麼你不必在腳本中的任何地方使用@DataProvider。

步驟:使用xls創建地圖 使用鍵讀取地圖值 作爲測試數據傳遞給測試用例。

相關問題