2017-10-04 55 views
0

我想知道這裏是否有解決方法。用類似的東西替換了實際的步驟。Cucumber:如何將整個示例表作爲值傳遞給每次迭代中的另一個示例表。

是否可以定義示例表,並將整個表作爲數據傳遞給每個迭代?

我有大量的子元素進行驗證,所以我不想在每個迭代中用分隔符分隔定義子元素數據。

下面是示例場景

ScenarioOutLine:驗證POST調用用於XXX使每個元件

Given Request headers are set 
When Request is posted 
Then the response body content has element <ele_name> with sub elements <Sub_ele> 

Examples: 
|elem_name>|<Sub_ele>| 
|Dept|{Dept_Sub_elements}| 
|Subject|{Subject_Sub_elements} 
|Course|{Course_Sub_elements}| 

Examples: 
|Dept_Sub_Elements| 
|IT| 
|Marketing| 

Examples: 
|Subject_Sub_Elements| 
|Anatomy| 
|Physciology| 
|Management,economics| 

回答

0

可以使用一個數據表的期望的給定後,當,或接着步驟下有效子元素。 請參閱:https://cucumber.io/docs/reference#data-tables

根據您使用的語言,您應該能夠在線查找示例。這裏是specflow的例子:

Having Tables in Example Table in SpecFlow

如果你有龐大的數據表(數百行),那麼你可以考慮一下在不同的文件中保存數據(屬性文件,JSON文件,甚至是excel文件)

對於較小的表格,它們可以在.feature文件中提及。爲了便於閱讀,可以使用intellij或eclipse的表格格式化插件。 例如 https://plugins.jetbrains.com/plugin/7550-pipe-table-formatter

+0

如果你有巨大的表來驗證你應該問問自己爲什麼你使用Cucumber(因爲你顯然沒有從BDD方面受益或圍繞功能文件進行討論),而不僅僅是使用類似單元的東西測試框架來運行這些測試。 –

0

爲什麼不僅僅使用單個示例表作爲驗證步驟的輸入?由於示例表中沒有任何內容會改變給定語句或何時語句,因此多次運行此場景沒有任何價值。

即使你多次運行它,我也沒有看到你想要做的事情的價值,並且它讓人類更難以理解這些例子。鑑於BDD的全部要點是與專題文件和場景中的利益相關者進行對話,任何使人難以理解例子的事情在BDD和黃瓜方面都是一種難聞的氣味。因此,有在試圖幹出表

Then the resulting page should have <Sub_element> found under <Element>: 
    | <Element> | <Sub_element>  | 
    | Dept  | IT     | 
    | Dept  | Marketing   | 
    | Subject | Anatomy    | 
    | Subject | Physciology   | 
    | Subject | Management,Economics | 
    | Course | CompSci 210   | 
    | Course | Math 101    | 
0

我會躲在步驟所有強制驗證,在一個方法,我總是每個場景之後調用,而不是污染它我有文件方面負值。強制性元素應該始終存在。當你討論最終用戶真正關心的系統實際的功能時,它們並不重要。

BDD和黃瓜是所有關於溝通和測試沒有關係。

我總是努力隱藏技術細節,我的情景需要業務代表的理解。技術細節屬於步驟委託給的步驟或幫助代碼。從我的角度來看,您的強制性要素是技術細節。

相關問題