在TestNG的另一個(gè)有趣的功能是參數(shù)測(cè)試。在大多數(shù)情況下,你會(huì)遇到這樣一個(gè)場(chǎng)景,業(yè)務(wù)邏輯需要一個(gè)巨大的不同數(shù)量的測(cè)試。參數(shù)測(cè)試,允許開發(fā)人員運(yùn)行同樣的測(cè)試,一遍又一遍使用不同的值。
TestNG讓你直接傳遞參數(shù)測(cè)試方法兩種不同的方式:
使用testng.xml
數(shù)據(jù)提供程序
傳遞參數(shù)使用testng.xml
有了這種技術(shù),在testng.xml文件中定義的簡(jiǎn)單參數(shù),然后在源文件中引用這些參數(shù)。讓我們看看下面的例子中如何使用這種技術(shù)來傳遞參數(shù)。
創(chuàng)建測(cè)試案例類
創(chuàng)建一個(gè)Java測(cè)試類 ParameterizedTest1.java.
測(cè)試方法parameterTest()添加到測(cè)試類。此方法需要一個(gè)字符串作為輸入?yún)?shù)。
添加注釋 @Parameters("myName") 到此方法。該參數(shù)將被傳遞testng.xml,在下一步我們將看到一個(gè)值。
創(chuàng)建Java類文件名 ParameterizedTest1.java 在 C: > TestNG_WORKSPACE
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class ParameterizedTest1 {
@Test
@Parameters("myName")
public void parameterTest(String myName) {
System.out.println("Parameterized value is : " + myName);
}
}
創(chuàng)建 TESTNG.XML
創(chuàng)建 testng.xml C: > TestNG_WORKSPACE 執(zhí)行測(cè)試案例
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
<test name="test1">
<parameter name="myName" value="manisha"/>
<classes>
<class name="ParameterizedTest1" />
</classes>
</test>
</suite>
我們還可以定義參數(shù)在<suite>級(jí)別。假設(shè)我們已經(jīng)定義在兩個(gè)<suite>和<test>級(jí)別myName,在這種情況下,常規(guī)的作用域規(guī)則適用。這意味著,任何類里面<test>標(biāo)簽將查看值參數(shù)定義在<test>,而testng.xml文件中的類的其余部分將看到定義在<suite>中值
編譯使用javac的測(cè)試用例類。
C:TestNG_WORKSPACE>javac ParameterizedTest1.java
現(xiàn)在,運(yùn)行testng.xml,其中將運(yùn)行parameterTest方法。TestNG的將試圖找到一個(gè)命名myName的第一<test>標(biāo)簽的參數(shù),然后,如果它不能找到它,它會(huì)搜索包圍在的<suit>標(biāo)簽。
C:TestNG_WORKSPACE>java -cp "C:TestNG_WORKSPACE" org.testng.TestNG testng.xml
驗(yàn)證輸出。
Parameterized value is : manisha
===============================================
Suite1
Total tests run: 1, Failures: 0, Skips: 0
===============================================
TestNG 對(duì)testng.xml 的參數(shù)的類型指定的值會(huì)自動(dòng)嘗試轉(zhuǎn)換。下面是支持的類型:
String
int/Integer
boolean/Boolean
byte/Byte
char/Character
double/Double
float/Float
long/Long
short/Short