天天看点

testng之DataProvider参数化

背景:当我们同一条用例需要传入不同的参数进行测试时,我们可以每组数据写一个用例,但是这样代码冗余太多。

所以我们可以想着:同一个用例传入不同的参数。

例如:当我们测试用户登录,我们测试场景1:用户A,密码正确; 场景2:用户B,密码不正确

我们只是编写一个登录测试用例,而传入的参数是两组不同的数据。

方法:

@Test(dataProvider='参数化名称')

@DataProvider(name='参数化名称')

代码演示:

public class DataProviderTest {

    @Test(dataProvider = "stuData")  //这个名称需要和@DataProvider(name='xx')是一样的才能找到
    public void studentTest(String name,int age){
        System.out.println("name="+name+","+"age="+age);

    }    /**
     * 通过一个方法获取到参数数,并且return。使用@DataProvider()进行注释
     * @return
     */
    @DataProvider(name="stuData")    public Object[][] dataProvider(){
        Object[][] o =new Object[][]{   //注意我们这个类型必须是Object
                {"zhangsan",20},
                {"lisi",30},
                {"wangwu",40}
        };        return o;
    }
}//运行结果name=zhangsan,age=20name=lisi,age=30name=wangwu,age=40