Java testng单数据提供者多重测试

时间:2014-09-29 22:37:14

标签: java csv testng test-data testng-dataprovider

方案: 我有一个包含10列测试数据的csv文件。对于每个列,我想要一个测试方法。

现在我知道如何使用dataprovider读取csv文件并将测试数据提供给测试方法。但是,我如何使用相同的testprovider进行多次测试?

我现在编写的数据提供者正在读取csv文件并迭代csv。

2 个答案:

答案 0 :(得分:2)

如果我正确理解你的问题,那么你想要做的就是让你说有10列,这10列需要分别作为测试数据传递给10个测试方法,但是你想要数据提供者一样。我的建议: 1)将Method参数传递给dataprovider。 2)将整个CSV文件加载到2D阵列中。 3)基于测试方法名称,返回该列数据作为该测试的测试数据。 如下所示:

import java.lang.reflect.Method;

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

public class TestNGTest {
    @DataProvider
    public Object[][] dp(Method method)
    {
        System.out.println("Test method : "+method.getName());
        if(method.getName().equals("test1"))
            return new Object[][]{{method.getName()}};
        else if(method.getName().equals("test2"))
            return new Object[][]{{method.getName()}};
        else
            return new Object[][]{};
    }

    @Test(dataProvider="dp")
    public void test1(String name)
    {
        System.out.println("DP -->"+name);
    }

    @Test(dataProvider="dp")
    public void test2(String name)
    {
        System.out.println("DP -->"+name);
    }
}

答案 1 :(得分:1)

您可以轻松地在单独的类中声明数据提供程序,并在多个类中重用它。看看dataProviderClass parameter of @Test annotation