【问题标题】:TestNG - Passing a CSV file with input data for all testsTestNG - 为所有测试传递带有输入数据的 CSV 文件
【发布时间】:2016-02-24 06:04:35
【问题描述】:

我正在使用 TestNG 框架进行单元测试。使用 DataProvider 注释,我能够成功地将输入数据从 CSV 文件传递​​到测试方法。

问题是我的测试类中有几种测试方法,每种方法都需要不同的数据集作为测试输入。所有输入都存在于单个 csv 文件中。我知道我可以通过在类级别使用 DataProvider 注释来指定单个输入文件。但是,有没有什么方法可以只使用输入 CSV 文件中的特定数据来运行测试文件中的每个测试用例?

为了更清楚一点,我的测试类(比如 TestDemo)将有 3 个测试方法(比如 test1、test2、test3)。 有一个 CSV 文件,其中包含所有 3 种方法的测试数据。无论如何我可以将其指定为输入文件,但仅使用用于该测试的数据运行每个测试?

提前致谢。

【问题讨论】:

    标签: java unit-testing testng


    【解决方案1】:

    我使用Apache Metamodel 在@DataProvider 方法中读取.CSV 文件并返回二维数组。很简单。

    wrote an example of doing it here,当然是使用 TestNG。具体来说,this class

    请记住,如果您将电子表格行中的所有项目放入 Object[],那么您可以将其作为单个对象直接传递给您的测试方法,并且 @BeforeMethod 能够在之前访问该行数据你的实际测试甚至开始了。这是 JUnit 4.x 无法做到的。

    【讨论】:

    【解决方案2】:

    TestNG 不支持开箱即用,但您应该能够轻松适应它。例如:

    public class TestDemo {
        private static Object[][] data() {
            /* Your original data provider code that returns test data for each test method.
             * You may wish to cache the result using memoization to avoid reading the CSV file
             * multiple times. */
        }
    
        @DataProvider(indices = 0)
        public static Object[][] data1() {
            return data();
        }
    
        @Test(dataProvider = "data1")
        public void test1(/* test 1 data parameters */) {
            /* test 1 code */
        }
    
        @DataProvider(indices = 1)
        public static Object[][] data2() {
            return data();
        }
    
        @Test(dataProvider = "data2")
        public void test2(/* test 2 data parameters */) {
            /* test 2 code */
        }
    
        @DataProvider(indices = 2)
        public static Object[][] data3() {
            return data();
        }
    
        @Test(dataProvider = "data3")
        public void test3(/* test 3 data parameters */) {
            /* test 3 code */
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多