如何使用TestNG为不同的数据集多次执行相同的测试

时间:2015-10-08 12:53:48

标签: testng

我有一种测试方法 例如

@Test
public void add(){
number1=number2+number3;
}

我有外部数据,如

a = 1 b = 2

a = 4 b = 6

a = 7 b = 10

我想为不同的数据集执行3次@Test方法。

如何使用testNG框架实现这一目标

3 个答案:

答案 0 :(得分:0)

参数或DataProviders(取决于您想要设置数据的位置)适合您:http://testng.org/doc/documentation-main.html#parameters

答案 1 :(得分:0)

您应该使用DataProviders并编写类似这样的内容

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

@DataProvider(name = "rangeWith2DArray")
    public Object[][] rangeCalculator() {
        return new Object[][]{
                {1, 2, 3},
                {4, 6, 10},
                {7, 10, 18}
        };
    }

    /**
     * Here 2 Numbers are added
     * And The test runs three times.
     *
     * @param num1     Num1
     * @param num2     Num2
     * @param validate - Number to Validate against
     */
    @Test(dataProvider = "rangeWith2DArray")
    public void testRangeSum(int num1, int num2, int validate) {
        Assert.assertEquals(num1 + num2, validate);
    }

测试将运行三次,最后一次将失败,因为7 + 10不是18:)

答案 2 :(得分:0)

通过使用TestNG的@Factory和@DataProvider注释,您可以使用不同的数据多次执行相同的测试用例。

请为此找到以下代码段。

public class ProcessTest implements ITest {

protected ProcessData processData;

@Test
public void executeServiceTest() {
    System.out.println(this.processData.toString());
}

@Factory(dataProvider = "processDataList")
public RiskServiceTest(ProcessData processData) {
    this.processData = processData;
}

@DataProvider(name = "processDataList", parallel=true)
public static Object[] getProcessDataList() {

    Object[] serviceProcessDataList = new Object[10];

for(int i=0; i<=serviceProcessDataList.length; i++){
    ProcessData processData = new ProcessData();
    serviceProcessDataList[i] = processData
}


    return serviceProcessDataList;
}

@Override
public String getTestName() {

    return this.processData.getName();
}
}