TestNG – Parameter with @DataProvider

@DataProvider 这个注解只有一个字符串属性:它的名字。
如果不提供名称,将会自动默认使用方法的名称。该方法返回一个对象数组。

1. 使用@DataProvider的简单例子:
public class TestParameterDataProvider {

@Test(dataProvider = "provideNumbers")
public void test(int number, int expected) {
Assert.assertEquals(number + 10, expected);
}

@DataProvider(name = "provideNumbers")
public Object[][] provideData() {

return new Object[][] {
{ 10, 20 },
{ 100, 110 },
{ 200, 210 }
};
}

}



PASSED: test(10, 20)
PASSED: test(100, 110)
PASSED: test(200, 210)



2. @DataProvider 使用整数和布尔参数。

创建一个java类。检查是否为素数
public class PrimeNumberChecker {
public Boolean validate(final Integer primeNumber) {
for (int i = 2; i < (primeNumber / 2); i++) {
if (primeNumber % i == 0) {
return false;
}
}
return true;
}
}

创建测试案例类
[list]
[*]创建一个Java测试类 ParamTestWithDataProvider1.java.
[*]定义方法primeNumbers(),其定义为DataProvider 使用注释。此方法返回的对象数组的数组。
[*]测试方法testPrimeNumberChecker()添加到测试类中。此方法需要一个整数和布尔值作为输入参数。这个方法验证,如果传递的参数是一个素数。
[*]添加注释 @Test(dataProvider = "test1") 到此方法。dataProvider的属性被映射到"test1".
[/list]

public class ParamTestWithDataProvider1 {
private PrimeNumberChecker primeNumberChecker;

@BeforeMethod
public void initialize() {
primeNumberChecker = new PrimeNumberChecker();
}

@DataProvider(name = "test1")
public static Object[][] primeNumbers() {
return new Object[][] { { 2, true }, { 6, false }, { 19, true },
{ 22, false }, { 23, true } };
}

// This test will run 4 times since we have 5 parameters defined
@Test(dataProvider = "test1")
public void testPrimeNumberChecker(Integer inputNumber,
Boolean expectedResult) {
System.out.println(inputNumber + " " + expectedResult);
Assert.assertEquals(expectedResult,
primeNumberChecker.validate(inputNumber));
}
}


创建 TESTNG.XML
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
<test name="test1">
<classes>
<class name="ParamTestWithDataProvider1" />
</classes>
</test>
</suite>


验证输出
[quote]2 true
6 false
19 true
22 false
23 true

===============================================
Suite1
Total tests run: 5, Failures: 0, Skips: 0
===============================================[/quote]

3. @DataProvider 传递对象作为参数。

创建一个Java类 Bean.java, 对象带有 get/set 方法
public class Bean {
private String val;
private int i;
public Bean(String val, int i){
this.val=val;
this.i=i;
}
public String getVal() {
return val;
}
public void setVal(String val) {
this.val = val;
}
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
}


创建测试案例类
[list]
[*]创建一个Java测试类 ParamTestWithDataProvider2.java.
[*]定义方法primeNumbers(),其定义为DataProvider使用注释。此方法返回的对象数组的数组。
[*]添加测试类中测试方法TestMethod()。此方法需要对象的bean作为参数。
[*]添加注释 @Test(dataProvider = "test1") 到此方法. dataProvider 属性被映射到 "test1".
[/list]
public class ParamTestWithDataProvider2 {
@DataProvider(name = "test1")
public static Object[][] primeNumbers() {
return new Object[][] { { new Bean("hi I am the bean", 111) } };
}

@Test(dataProvider = "test1")
public void testMethod(Bean myBean) {
System.out.println(myBean.getVal() + " " + myBean.getI());
}

}
创建 TESTNG.XML
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
<test name="test1">
<classes>
<class name="ParamTestWithDataProvider2" />
</classes>
</test>
</suite>


验证输出
[quote]hi I am the bean 111

===============================================
Suite1
Total tests run: 1, Failures: 0, Skips: 0
===============================================[/quote]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值