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

问题描述 投票:3回答:2

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

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

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

java csv testng test-data testng-dataprovider
2个回答
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
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.