如何在testng中重用测试方法,这些方法可以从多个数据提供者那里获取数据

时间:2013-09-23 13:58:26

标签: java testng

我是testng的新手,我的要求如下:

我有5种测试方法,我有2个测试场景和2个数据提供者。 场景1:这将使用Dataprovider1并运行所有5种测试方法。 场景2:这将使用数据提供者2并在5中运行3种测试方法。

请使用testng建议解决上述问题。

我只是用两种方法更清楚地编辑它。 使用DP1 - 执行两个测试方法 使用DP2 - 执行两种测试方法。

@Test(dataProvider = "DP")
public static void testCompanyId(Map mp){
    AssertJUnit.assertNotNull(mp.get("id"));        
}
@Test(dataProvider = "DP")
public static void testName(Map mp){
    AssertJUnit.assertNotNull(mp.get("name"));  
}

@DataProvider(name = "DP")
public static Object[][] Create(){
    String name="abc";
            String id="12fd123d43r43fd4";
            Map<String,String> inputMap = new HashMap<String,String>();
            mp.put("name", name);
            mp.put("id", id);
    return new Object[][]{{inputMap}};
 }
@DataProvider(name = "DP")
public static Object[][] Get(){
    String name="xyz";
            String id=null;                
            mp.put("name", name);
            mp.put("id", id);

    return new Object[][]{{inputMap}};
}

TIA

1 个答案:

答案 0 :(得分:0)

我对这个问题有点不清楚,但你可以让两个数据提供者都采用常规方法然后将它们组合在实际的@DataProvider中


编辑:

查看代码,如果要对两个数据提供程序执行两个测试,为什么不这样做:

@Test(dataProvider = "DP")
public static void test(String name, String id){
    AssertJUnit.assertNotNull(mp.get("id"));
    AssertJUnit.assertNotNull(mp.get("name"));          
}

@DataProvider(name = "DP")
public static Object[][] params(){
    return new Object[][]{   { "abc", "12fd123d43r43fd4" },
                             { "xyz", null };
}

也不确定是否有两个同名的数据提供者是个好主意。

由于我对这个问题仍然有点不清楚,你也可以将两个哈希图作为对象返回,如果你正在尝试这样做的话。

@DataProvider(name = "DP")
public static Object[][] params(){
    String name="abc";
            String id="12fd123d43r43fd4";
            Map<String,String> inputMap = new HashMap<String,String>();
            mp.put("name", name);
            mp.put("id", id);

            //create inputMap2


    return new Object[][]{{inputMap1},{inputMap2};
 }