TestNG中的幾種傳參(共享數據)方式

1、@Parameters(arg1, arg2)

這種方式是從xml文件中傳參數進入測試方法,xml參數根據parameter標籤放置位置可被多個測試方法或者類共享。必須通過xml啓動運行才能傳參。

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1" >
<parameter name="sname" value="tom" />
  <test name="Regression1"   >
	<classes>
	  <class name="Annotations.Demo8" />
	</classes>
 </test>
</suite>
public class Demo8 {
	@Parameters("sname")
	@Test
	public void getName(String sname) {
		System.out.println(sname);
	}
}

2、ITestContext

ITestContext是一個接口,其內部實現了很多的get方法,專門用來獲取測試運行時的信息,並可以在同類不同方法之間或者不同類之間傳遞。ITestContext對象會自動實例化,不同的方法共享ITestContext對象,可以一個方法設置鍵值對,一個方法通過context獲取鍵值對。但是一定要先運行set再執行get。

public class Demo2 {	
	@Test
	public void test1(ITestContext context) {
		context.setAttribute("addr", "asd");
	}
	
	@Test
	public void test2(ITestContext context) {
		System.out.println(context.getAttribute("addr"));
	}
}
public class Demo3 {
	@Test
	public void test1(ITestContext context) {
		System.out.println(context.getAttribute("addr"));
	}
}

3、getInstance()

接口ITestListener或類TestListenerAdapter的監聽器方法參數中有ITestResult的對象,該對象用來記錄測試的結果;該類實現了getInstace()方法,用來記錄運行此方法的實例。在監聽器方法中,可以用此方法獲取被監聽的對象,進而獲取被監聽對象的屬性或方法。

public class AdminTest extends BaseTest{
	String url = "test";	
	@Test
	public void AdminLogin(ITestContext context) throws InterruptedException {
		assertTrue(false);	
	}
}
public class Listener extends TestListenerAdapter{
	@Override
	public void onTestFailure(ITestResult tr)
        // Test方法中調用到該監聽方法,獲取被監聽的實例對象,並且進行類型強制轉換。
        Test t = (Test)tr.getInstance(); 
        System.out.println(t.url);
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章