0

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

我有 5 种测试方法,我有 2 个测试场景和 2 个数据提供者。场景 1:这将使用 Dataprovider1 并运行所有 5 种测试方法。场景 2:这将使用 Data provider2 并运行 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

4

1 回答 1

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};
 }
于 2013-09-26T15:09:50.670 回答