2015-03-31 61 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 
} 

所以基本上你这两个文件,但是从单一数据提供者发送数据。

相关问题