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> 標簽下參數優先級高. 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM