一. 举例说明
创建一个类,包含一个测试方法,和测试方法前后置执行方法:
使用注解@Parameters命名参数,传入参数名称列表,对应方法中的参数

testng.xml文件中定义对应的参数及值,参数名称与方法中命名的名称对应:

二.参数化@Parameters注解说明
@Parameters注解可以放置在已有@Test、@Before、@After、@Factory注解的方法上。
这个注解可以用于初始化类中的测试方法的参数。
注意:
1)XML文件中的参数与java方法中的参数顺序必须一致,否则testNG会抛出错误。
2)参数的作用域已经确定。在testng.xml中,可以在和标签下声明。如果多个参数名称一致,标签下的参数具有优先权。这种特性适用于一个参数适用于所有测试方法,而只有某些测试方法需要重写参数。
三.带有参数的数据驱动
如果需要传递复杂的参数或java创建的对象(复杂对象、从属性文件或数据库读取数据等),通过testng.xml文件的方式可能不太适合。这种情况可以使用数据驱动的方式为你的测试提供数据。数据库驱动是在类中定义一个方法,返回一组数据对象。该方法使用@DataProvider注解。
定义一个类,包含数据提供方法(使用@DataProvider注解)创建批量数据,使用数据的测试方法:

testng.xml描述测试方法,并执行:

将定义的2个数据代入测试方法中,并输出测试结果:

2.1 dataProvider也支持注入,testNG将使用测试上下文进行注入。数据驱动可以返回以下类型的数据:
1)数组对象(Object[][]),第一维为调用测试方法的次数,第二维包含一个必须与测试方法参数类型兼容的对象数组。
2)迭代器(Object[]),与1)不同的是,迭代器允许惰性地创建测试数据。TestNG将调用迭代器,然后使用迭代器返回的参数逐个调用test方法。适用于需要传递给测试方法的参数很多,又不想预先创建所有参数集。
3)对象数据(Object[])。与2)类似,对源数组的每个元素调用一次测试方法。
3.2 如果声明了@DataProvider的数据提供方法的第一个参数为带有反射方法,TestNG将把当前测试方法作为第一个参数传入。当多个测试方法使用同一个@DataProvider提供的测试数据,并希望不同的测试方法返回不同的值时,这是很有用的方式。
定义1个数据提供方法和2个测试方法:

testng.xml增加配置并执行,不同的测试方法返回不同的参数,并输出:

这种方式适用于大部分的测试方法使用一种数据,特别的测试方法使用特殊的测试数据。
7598

被折叠的 条评论
为什么被折叠?



