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);
}
}