2015-03-31 44 views
-3

我正在使用TestNG框架在Selenium上工作。我有多個數據提供者,我想合併它們並在Test中發送。這些是我創建在TestNG中單獨合併多個數據提供者

@DataProvider(name = "Sample1")  
public Object[][] createData1() {   
Object[][] retObjArr= ExcelUtils.getTableArray ("Test\\resources\\data\\Testdata.xls","test1", "selector1");  
return(retObjArr);  }   

@DataProvider(name = "Sample2")  
public Object[][] createData2() {   
Object[][] retObjArr= ExcelUtils.getTableArray ("Test\\resources\\data\\Testdata.xls","test2", "selector2");   return(retObjArr); 
} 

回答

1

你可以有一個名爲createData一個方法,你可以通過方法參數傳遞給它,這應該告訴你哪個測試方法,數據從該文件中獲取的數據提供者。維護測試方法到測試數據文件的映射。讓我知道這是否有幫助。 示例代碼:

import java.lang.reflect.Method; 

import org.testng.annotations.DataProvider; 
import org.testng.annotations.Test; 

public class TestClass { 

    @DataProvider(name="dp") 
    public Object[][] dp(Method method) 
    { 
     if(method.getName().equalsIgnoreCase("test1")) 
      return new Object[][]{{"dp1"}}; 
     else if(method.getName().equalsIgnoreCase("test2")) 
      return new Object[][]{{"dp2"}}; 
     else 
      return new Object[][]{{"default"}}; 
    } 

    @Test(dataProvider="dp") 
    public void test1(String str) 
    { 
     System.out.println(str); 
    } 

    @Test(dataProvider="dp") 
    public void test2(String str) 
    { 
     System.out.println(str); 
    } 


} 

輸出:

dp1 
dp2 
PASSED: test1("dp1") 
PASSED: test2("dp2") 

=============================================== 
    Default test 
    Tests run: 2, Failures: 0, Skips: 0 
=============================================== 


=============================================== 
Default suite 
Total tests run: 2, Failures: 0, Skips: 0 
=============================================== 

編輯:添加的樣本代碼。

+0

嗨Mrunal ..謝謝你的回覆..你能否請用例子來解釋一下。 – 2015-04-01 04:54:16

+0

@ShwetaKhandewalePathak我已經添加了一個示例工作代碼。請通過它,讓我知道這是否有幫助。 – 2015-04-05 05:23:21

+0

@halfer我是否可以知道需要解決的問題? – 2015-10-25 15:34:06

0

Mrunal在談論這樣的事情,

@DataProvider(name="getDataFromFile") 
public static Iterator<Object[]> getDataFromFile(Method testMethod) throws Exception 
{ 
    String expected=null; 
    String webServicename=testMethod.getDeclaringClass().getSimpleName(); 
    Reporter.log("Providing data for web service " + webServicename,true); 
    // Read from a map what all data you should send from what what xls files 
// create the dataset here 

//send the test data to the test method 
} 

你的測試方法應該是這樣的

@Test(dataProvider="getDataFromFile",dataProviderClass=utility.TestDataController.class) 
    public void runTest(<whateverdataprovider returns in a row> data) throws Exception { 
// use data 
} 

所以基本上你這兩個文件,但是從單一數據提供者發送數據。

相關問題