您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > TestNG
TestNG参数传递方式
作者:网络转载 发布时间:[ 2015/7/24 10:08:46 ] 推荐标签:单元测试工具

  xml文件配置:
<suite name="Parameter test Suite" verbose="1">
<!-- This parameter will be passed to every test in this suite -->
<parameter name="suite-param" value="suite level parameter" />
<test name="Parameter Test one">
<classes>
<class name="com.howtodoinjava.test.ParameterTest">
<methods>
<include name="prameterTestOne" />
</methods>
</class>
</classes>
</test>
<test name="Parameter Test two">
<!-- This parameter will be passed this test only -->
<parameter name="test-two-param" value="Test two parameter" />
<classes>
<class name="com.howtodoinjava.test.ParameterTest">
<methods>
<include name="prameterTestTwo" />
</methods>
</class>
</classes>
</test>
<test name="Parameter Test three">
<!-- Overriding suite level parameter -->
<parameter name="suite-param" value="overiding suite parameter" />
<!-- Test specific parameter -->
<parameter name="test-three-param" value="test three parameter" />
<classes>
<class name="com.howtodoinjava.test.ParameterTest">
<methods>
<include name="prameterTestThree" />
</methods>
</class>
</classes>
</test>
</suite>
  也可以使用可选参数,如果xml里没有给参数传入值,那么测试方法将会调用可选的参数值:
  public class ParameterTest
  {
  @Parameters({ "optional-value" })
  @Test
  public void optionTest(@Optional("optional value") String value) {
  System.out.println("This is: " + value);
  }
  }
  对应的xml文件配置:
<suite name="Optional test Suite" verbose="1">
<test name="Optional Test one">
<classes>
<class name="test.parameter.OptionalTest" />
</classes>
</test>
<test name="Optional Test two">
<parameter name="optional-value" value="passed from xml" />
<classes>
<class name="test.parameter.OptionalTest" />
</classes>
</test>
</suite>
  这里配置了两个test,第一个执行option方法时,由于没有在xml文件里找到option-value对应的值,所以将会输出方法中的@Optional的值;而第二个test中有设置option-value的值为passed........那么将会输出对应的值。
  结果:
  This is: optional value
  This is: passed from xml
  ===============================================
  Optional test Suite
  Total tests run: 2, Failures: 0, Skips: 0
  ===============================================
  DataProvider方式传参
  只提供了一个字符串属性:名称,供测试方法作为传递参数的annotation使用两种DataProvider,一种是返回一个二维数组对象(Object[][],第一个数组是数据集,第二个数组代表参数值),如上面的例子;另外一种DataProvider是返回一个Iterator,DataProvider可以向测试方法传递任意类型任意数目的参数,利用DataProvider提供不同的参数集合对一个测试方法进行多次调用。
  dataProvider可以进行数据驱动的测试。
  在同一个类中使用dataProvider:
  public class SameClassDataProvider
  {
  @DataProvider(name = "data-provider")
  public Object[][] dataProviderMethod() {
  return new Object[][] { { "data one" }, { "data two" } };
  }
  @Test(dataProvider = "data-provider")
  public void testMethod(String data) {
  System.out.println("Data is: " + data);
  }
  }
  结果:
  Data is: data one
  Data is: data two
  PASSED: testMethod("data one")
  PASSED: testMethod("data two")
  在不同的类中使用:
public class DataProviderClass
{
@DataProvider(name = "data-provider")
public static Object[][] dataProviderMethod()
{
return new Object[][] { { "data one" }, { "data two" } };
}
}
public class TestClass
{
@Test(dataProvider = "data-provider", dataProviderClass = DataProviderClass.class)
public void testMethod(String data)
{
System.out.println("Data is: " + data);
}
}
  结果和上面的一样,只是要注意,在使用数据集的方法中需要添加dataProviderClass的属性,指明是那个类提供数据。

上一页12下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd