数据提供者

数据提供者允许创建在测试中运行的多个测试输入。让我们考虑一个测试,它验证数字是否正确加倍。要创建数据提供程序,请提供一个静态方法,该方法返回 Object[][]Iterator<Object[]>(后者允许对测试输入进行延迟计算),使用 @DataProvider 注释进行注释,属性 name 是标识提供程序的唯一字符串。

import org.testng.annotations.DataProvider;

public class DoublingDataProvider {
    public final static String DOUBLING_DATA_PROVIDER = "doublingDataProvider";

    @DataProvider(name = DOUBLING_DATA_PROVIDER)
    public static Object[][] doubling() {
        return new Object[][]{
                new Object[]{1, 2},
                new Object[]{2, 4},
                new Object[]{3, 6}
        };
    }
}

在上面的例子中,每个 Object[] 代表一个测试用例的数据集 - 这里是要加倍的数字,然后是加倍后的预期值。

要使用数据提供程序,请使用提供程序的名称填充测试的 dataProvider 属性。如果提供程序方法是在测试类或其基类之外定义的,则还必须指定 dataProviderClass 属性。测试方法应该采用与测试用例描述的元素相对应的参数 - 这里是两个整数。

import org.testng.annotations.Test;

import static org.testng.Assert.assertEquals;

public class DoublingTest {

    @Test(dataProvider = DoublingDataProvider.DOUBLING_DATA_PROVIDER, dataProviderClass = DoublingDataProvider.class)
    public void testDoubling(int number, int expectedResult) {
        assertEquals(number * 2, expectedResult);
    }
}