TestNG参数化之@Parameters传参

通过TestNG实现参数话常用两种方式,一种是借助 @Parameters读取testng.xml中参数,一种是使用@DataProvider注解传参。

此次主要讲解XML传参,语法:在java类中定义参数名@Parameters("paraName" });在TestNG.xml中设置参数值<parameter name="paraName"  value="paraValue"/>

以下为关键代码部分,柠檬黄色标记部分是具体传参代码

1.传一个参数

testDemo.java

@Parameters({ "first-name" })
@Test
public void testSingleString(String firstName) {//对应parameters只有一个参数
  System.out.println("Invoked testString " + firstName);
}

testng.xml

<suite name="Suite" parallel="false">
  <parameter name="first-name"  value="Cedric"/>
  <test name="Simple example">
    <classes>
      <class name="**.testDemo"/>
    </classes>
  </test> 
</suite> 

2.传多个参数

testDemo.java

@Parameters({ "userName", "password" })
@BeforeMethod
public void beforeTest(String userName, String pwd) {
    System.out.println("参数userName值为:"+userName);
    System.out.println("参数password值为:"+pwd);
}

testng.xml

<suite name="Suite" parallel="false">
  <parameter name="userName"  value="admin"/>
  <parameter name="password"  value="123456"/>
  <test name="mulParameters">
    <classes>
      <class name="**.testDemo"/>
    </classes>
  </test> 
</suite>

3.使用默认值

testDemo.java

@Parameters("db")
@Test
public void testNonExistentParameter(@Optional("mysql") String db) { 
     System.out.println("数据库为:"+db);
}

testng.xml

<!-- 无name=“db”的parameter ,testDemo中直接读取默认值“mysql”-->
<suite name="Suite" parallel="false">
  <test name="demo">
    <classes>
      <class name="**.testDemo"/>
    </classes>
  </test> 
</suite>

打印结果   数据库为:mysql

备注:

  • 只有已使用 @Test@Before/After or @Factory 注解的方法可以使用@Parameters.
  • 参数有作用域,在 testng.xml中,参数在 <suite> 或 <test>标签下赋值. 如果有同名参数, <test> 标签下参数优先级高. 
posted @ 2015-07-09 10:16  钟灵.毓秀  阅读(7501)  评论(0编辑  收藏  举报