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


當需要測試的方法含有參數時,可以通過@Parameters 注解給該方法傳遞參數。

比如下面這個類,要調用whoami則必須寫一個main函數,然后在main函數中調用該函數,並傳入參數,使用TestNG的@Parameters參數則不需要這么做。

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,這種情況特別適用於在全局范圍內某個值是固定的,但是在某個特殊情況下需要改變它的值的情況

<?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>

@Parameter參數使用的位置

  1. 可以用在任意有@Test、@Before/@After 或者@Factory注解的方法上
  2. 可以用在一個類的有參數構造方法上,此類的有參數構造方法只能有一個帶@Parameter注解,再執行testng.xml時就會調用此構造方法構造此類的對象。


免責聲明!

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



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