简体   繁体   English

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

[英]Java testng single dataprovider multiple test

Scenario: I have a csv file with 10 columns of test data. 场景:我有一个包含10列测试数据的csv文件。 For each column I want to have a test method. 对于每个列,我想要一个测试方法。

Now I know how to use dataprovider to read the csv file and provide the test data to a test method. 现在我知道如何使用dataprovider读取csv文件并将测试数据提供给测试方法。 But how can I use the same testprovider for multiple tests? 但是,我如何使用相同的testprovider进行多次测试?

The dataprovider that I have written for now is reading the csv file and iterating through the csv. 我现在编写的数据提供者正在读取csv文件并迭代csv。

If i understand your question correctly then what you want to do is lets say you have 10 columns and this 10 columns need to be passed to 10 test methods respectively as test data, but you want data provider as same. 如果我正确理解你的问题,那么你想要做的就是让你说你有10列,这10列需要分别作为测试数据传递给10个测试方法,但是你想要数据提供者一样。 My recommendation: 1) Pass Method argument to your dataprovider. 我的建议:1)将Method参数传递给dataprovider。 2) Load whole CSV file into 2D array. 2)将整个CSV文件加载到2D阵列中。 3) Based on test method name that return that column data as test data for that test. 3)基于测试方法名称,返回该列数据作为该测试的测试数据。 Something like below: 如下所示:

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);
    }
}

You can easily declare data provider in separate class and reuse it in multiple classes. 您可以轻松地在单独的类中声明数据提供程序,并在多个类中重用它。 Take a look at dataProviderClass parameter of @Test annotation . 看一下@Test注释的dataProviderClass参数

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在 DataProvider 为单个测试方法使用不同数据运行多个测试的情况下,在 TestNG/Maven 报告中获取测试方法名称 - Get Test method name in TestNG/Maven reporting in case of DataProvider running multiple tests with different data for single Test method TestNG Dataprovider-筛选测试数据 - TestNG Dataprovider - Filtering test data Testng - 在 Java 中循环数据提供程序或 class? - Testng - Looping a dataprovider or a class in Java? Selenium Java testNG:是否可以在testng测试方法中部分使用dataprovider数据 - Selenium java testNG: Is it possible to use dataprovider data partially in testng test method 如何在拼写错误的dataprovider上进行testng测试失败? - how to fail testng test on misspelled dataprovider? 使用TestNG DataProvider跳过某些测试迭代 - Skip Certain Test Iterations Using TestNG DataProvider TestNG与DataProvider一次执行一次测试一次迭代 - TestNG Executing Test One Iteration at a time with DataProvider TestNG:一个@Test 不止一个@DataProvider - TestNG: More than one @DataProvider for one @Test 将dataprovider参数作为数组存储在testng中的测试方法中 - Store dataprovider parameters as array in test method in testng 在testng中使用不同的dataprovider运行相同的测试 - running same test with different dataprovider in testng
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM