我有一种测试方法 例如
@Test
public void add(){
number1=number2+number3;
}
我有外部数据,如
a = 1 b = 2
a = 4 b = 6
a = 7 b = 10
我想为不同的数据集执行3次@Test方法。
如何使用testNG框架实现这一目标
答案 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();
}
}