您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > TestNG
TestNG參數(shù)傳遞方式
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2015/7/24 10:08:46 ] 推薦標(biāo)簽:單元測試工具

  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>
  也可以使用可選參數(shù),如果xml里沒有給參數(shù)傳入值,那么測試方法將會(huì)調(diào)用可選的參數(shù)值:
  public class ParameterTest
  {
  @Parameters({ "optional-value" })
  @Test
  public void optionTest(@Optional("optional value") String value) {
  System.out.println("This is: " + value);
  }
  }
  對應(yīng)的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>
  這里配置了兩個(gè)test,第一個(gè)執(zhí)行option方法時(shí),由于沒有在xml文件里找到option-value對應(yīng)的值,所以將會(huì)輸出方法中的@Optional的值;而第二個(gè)test中有設(shè)置option-value的值為passed........那么將會(huì)輸出對應(yīng)的值。
  結(jié)果:
  This is: optional value
  This is: passed from xml
  ===============================================
  Optional test Suite
  Total tests run: 2, Failures: 0, Skips: 0
  ===============================================
  DataProvider方式傳參
  只提供了一個(gè)字符串屬性:名稱,供測試方法作為傳遞參數(shù)的annotation使用兩種DataProvider,一種是返回一個(gè)二維數(shù)組對象(Object[][],第一個(gè)數(shù)組是數(shù)據(jù)集,第二個(gè)數(shù)組代表參數(shù)值),如上面的例子;另外一種DataProvider是返回一個(gè)Iterator,DataProvider可以向測試方法傳遞任意類型任意數(shù)目的參數(shù),利用DataProvider提供不同的參數(shù)集合對一個(gè)測試方法進(jìn)行多次調(diào)用。
  dataProvider可以進(jìn)行數(shù)據(jù)驅(qū)動(dòng)的測試。
  在同一個(gè)類中使用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);
  }
  }
  結(jié)果:
  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);
}
}
  結(jié)果和上面的一樣,只是要注意,在使用數(shù)據(jù)集的方法中需要添加dataProviderClass的屬性,指明是那個(gè)類提供數(shù)據(jù)。

上一頁12下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd