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