TestNG參數(shù)傳遞方式
作者:
網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:
[ 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ù)傳入值,那么測試方法將會調(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>
這里配置了兩個test,第一個執(zhí)行option方法時,由于沒有在xml文件里找到option-value對應(yīng)的值,所以將會輸出方法中的@Optional的值;而第二個test中有設(shè)置option-value的值為passed........那么將會輸出對應(yīng)的值。
結(jié)果:
This is: optional value
This is: passed from xml
===============================================
Optional test Suite
Total tests run: 2, Failures: 0, Skips: 0
===============================================
DataProvider方式傳參
只提供了一個字符串屬性:名稱,供測試方法作為傳遞參數(shù)的annotation使用兩種DataProvider,一種是返回一個二維數(shù)組對象(Object[][],第一個數(shù)組是數(shù)據(jù)集,第二個數(shù)組代表參數(shù)值),如上面的例子;另外一種DataProvider是返回一個Iterator,DataProvider可以向測試方法傳遞任意類型任意數(shù)目的參數(shù),利用DataProvider提供不同的參數(shù)集合對一個測試方法進行多次調(diào)用。
dataProvider可以進行數(shù)據(jù)驅(qū)動的測試。
在同一個類中使用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的屬性,指明是那個類提供數(shù)據(jù)。