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

 

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