TestNG官方文件中文版 7 方法依賴和工廠

2021-08-29 16:44:40 字數 2781 閱讀 7550

5.6 - dependent methods

有些時候,你需要你的測試方法按照乙個特定的順序被呼叫。這非常有用,比如:

* 在執行更多測試方法前確認特定數量的測試方法呼叫完成並且成功

* 初始化測試並希望這個初始化方法也作為測試方法(被標記為@before/after的方法將不作為最終報告的一部分)

為了做到這點,需要使用@test註解的dependsonmethods屬性或者dependsongroups屬性。

有兩種依賴:

* 強依賴。在執行你的測試方法前所有依賴方法必須執行並且成功。哪怕有乙個依賴方法失敗,測試方法都不會被呼叫,在報告中將被標記為skip。

* 軟依賴。測試方法在依賴方法執行後總是會被執行,即使某些依賴方法失敗。對於只想確認測試方法是按照特定順序執行,而測試方法並不真正依賴其他方法是否成功的情況,非常有用。軟依賴通過在@test註解中增加"alwaysrun=true"來實現。

這裡有乙個強依賴的例子:

@test

public

void

serverstartedok() {}

@test(dependsonmethods =)

public

void

method1() {}

在這個例子中,method1()被申明依賴於方法serverstartedok(),這保證serverstartedok() 方法將總是首先被呼叫。

也可以讓方法依賴於完整的測試組:

@test(groups =)

public

void

serverstartedok() {}

@test(groups =)

public

void

initenvironment() {}

@test(dependsongroups =)

public

void

method1() {}

在這裡例子中,method1()被申明依賴於任何匹配正規表示式"init.*"的組,這保證了方法serverstartedok()和initenvironment()總是在method1()前被呼叫。

注意:前面說明說,在測試執行期間,屬於同乙個組的方法的呼叫順序並不保證相同。如果乙個方法的依賴失敗了,而且是強依賴(預設alwaysrun=false),這個方法將不被標記為fail而是skip。被跳過的方法在最終的報告中報告(在html中用紅和綠之外的其他顏色),這很重要,因為被跳過的方法並不一定是失敗。

dependsongroups和dependsonmethods都接受正規表示式作為引數。對於dependsonmethods, 如果你依賴的方法巧合有多個過載的版本,所有裝載的方法都將被呼叫。如果你只想呼叫過載的方法中的乙個,請使用dependsongroups。

有關方法依賴的更高階的例子,請參考本文件,將使用繼承來提供乙個優雅的解決方案來處理多重依賴的問題。

5.7 - factories

工廠類容許你動態建立測試案例。例如,想象你需要建立乙個測試方法,訪問乙個web站點上的頁面很多次,而你希望用不同的值來呼叫它:

public

class

testwebserver )

public

void

accesspage(

intnumberoftimes) }}

testng.xml:

<

test name="

t1">

<

parameter name="

number-of-times

"value="

10"/>

<

class

name="

testwebserver

"/>

test

>

<

test name="

t2">

<

parameter name="

number-of-times

"value="

20"/>

<

class

name="

testwebserver

"/>

test

>

<

test name="

t3">

<

parameter name="

number-of-times

"value="

30"/>

<

class

name="

testwebserver

"/>

test

>

這種方式很快就會變的難於管理,所以作為替換品,你可以使用factory:

public

class

webtestfactory }

而新的測試類是這樣:

public

class

webtest 

@test

public

void

testserver() }}

testng.xml只需要引用簡單引用這個包含factory方法的類,因為測試例項將在執行時被建立。

<

class 

name

="webtestfactory"

/>

工廠類將像@test和@before/after一樣接收引數,必須返回object。返回的物件可以是任何類(不一定要求是和factory類一樣),並且他們甚至都不需要包含testng的註解(這種情況下他們將被testng忽略)。

TensorFlow 官方文件中文版

打個不太恰當的比喻,如今 google 對待 tensorflow 系統,有點類似於該公司對待旗下移動作業系統 android。如果更多的資料科學家開始使用 google 的系統來從事機器學習方面的研究,那麼這將有利於 google 對日益發展的機器學習行業擁有更多的主導權。google tenso...

Apache Storm 官方文件中文版

本專案是 apache storm 官方文件的中文翻譯版,致力於為有實時流計算專案需求和對 apache storm 感興趣的同學提供有價值的中文資料,希望能夠對大家的工作和學習有所幫助。說明 如果沒有特殊宣告,本專案文件中所述 storm 版本均為 0.9.x 版本。原文資料 官方 trident...

Apache Storm 官方文件中文版

本專案是 apache storm 官方文件的中文翻譯版,致力於為有實時流計算專案需求和對 apache storm 感興趣的同學提供有價值的中文資料,希望能夠對大家的工作和學習有所幫助。說明 如果沒有特殊宣告,本專案文件中所述 storm 版本均為 0.9.x 版本。原文資料 官方 trident...