在测试类中定义的测试方法,通常是不带参数的,但如果确实想要参数怎么办呢?TestNG中的参数标注@Parameters主要解决这个问题。
使用TestNG中的参数标注@Parameters为测试方法传递参数,这个过程可以分为两步,第一步是在测试类中定义测试方法时,通过@Parameters为测试方法声明参数的名称;第二步是在testng.xml配置文件中制定测试规划时,通过测试参数的名称为测试参数赋值。
1. 在测试类中声明测试参数的名称
通过@Parameters可以声明多个参数,只要与测试方法的参数一一对应即可。如果参数不对应则在执行测试的时候会抛出异常。
示例如下:
@Parameters({ "first-name", "last-name" }) @Test public void testSingleString(String firstName, String lastName) { System.out.println("Invoked testString " + firstName + " " + lastName); }
2.在testng.xml配置文件中为测试参数赋值
在测试类中定义好的测试参数,其初始值是在testng.xml配置文件中设置的。对应不同的测试,初始值可能不同。示例如下:
- <suite name="My suite">
- <parameter name="first-name" value="Cedric"/>
- <parameter name="last-name" value="Han"/>
- <test name="Simple example">
- <-- ... -->
在testng.xml配置文件中,可以通过全局参数(与各个测试用例无关,如上例所示)为测试参数赋值,也可以在各个测试用例中为测试参数赋值。如果一个测试参数,同时有全局赋值和测试用例赋值,则采用测试用例赋值。