TestNG使用@Parameter給要測試的方法傳遞參數

當須要測試的方法含有參數時,能夠經過@Parameters 註解給該方法傳遞參數。

好比下面這個類,要調用whoami則必須寫一個main函數,而後在main函數中調用該函數,並傳入參數,使用TestNG的@Parameters參數則不須要這麼作。java

package ngtest;

import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class Student {
    @Parameters({"name","age"})//表示該函數使用的參數由testng.xml提供,第一個參數是xml中的name參數,第二個是age參數
    @Test
    public void whoami(String name,String age){
        System.out.println("I am "+name+","+age+" years old.");
    }
}

testng.xml配置以下函數

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
  <parameter name="name" value="Mike"></parameter>  <!--參數name的值是Mike-->
  <parameter name="age" value="18"></parameter>        <!--參數age的值是18-->
  <test name="Test">
    <classes>
      <class name="ngtest.Student"/>
    </classes>
  </test> 
</suite>

運行該testng.xml就會把name和age的值代入到函數的參數列表中,而後執行該函數。輸出結果:測試

[TestNG] Running:
  D:\workspace\tester\testng.xml

I am Mike,18 years old

===============================================
Suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================

還能夠使用Optinal註解,若是在testng.xml中沒找到Parameters中指定的參數,那麼就會使用Optional中的參數來替代。

public class TestNg3 {
    @Parameters({"parm1"})
    @Test
    public void Test(@Optional("沒有參數只能用我了") String a){ //若是在testng.xml中沒有找到param1參數,則會給a賦值「沒有參數只能用我了」
        System.out.println(a);
    }//打印 沒有參數只能用我了
}

testng.xml文件中參數的做用範圍

testng.xml文件中的參數是有做用範圍的,下面的param1在全局範圍內都是hahahaha,可是在一個Test內是oooo,這種狀況特別適用於在全局範圍內某個值是固定的,可是在某個特殊狀況下須要改變它的值的狀況ui

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="My test suite">
    <parameter name="parm1" value="hahahaha"/>
    <test name="First Test">
    <parameter name="parm1" value="oooooooo"/>
        <classes>
            <class name="com.cangqiong.test.TestNg3"/>
        </classes>
    </test>
</suite>
相關文章
相關標籤/搜索