2 回答

TA貢獻1780條經驗 獲得超4個贊
在您的步驟中使用數據表可以幫助組織這些信息:
Scenario Outline: My scenario has too many parameters
When I perform my request with the following inputs:
| Field | Value |
| param1 | <param1> |
| param2 | <param2> |
| param3 | <param3> |
| param4 | <param4> |
| param5 | <param5> |
| param6 | <param6> |
| param7 | <param7> |
| param8 | <param8> |
| param9 | <param9> |
| param10 | <param10> |
| param11 | <param11> |
Examples:
| param1 | param2 | param3 | param4 | param5 | param6 | param7 | param8 | param9 | param10 | param11 |
| dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy |
| dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy |
您的步驟定義變為:
@When("When I perform my request with the following inputs:")
public void notTooManyAnymore(DataTable table) {
// Use table to get the params
}
現在您可以從中提取參數table(請參閱Cucumber和Cucumber 數據表中的數據表)。為了某些編譯時安全,您應該能夠將表映射到 POJO。

TA貢獻1810條經驗 獲得超4個贊
更好的方法是將所有這些示例從功能中取出,并將它們下推到步驟定義調用的輔助方法中。
示例表中的每組示例都應該有某種含義(否則為什么它們首先出現在那里?。?。您可以使用此均值來確定捕獲特定參數組合的名稱。然后,您可以在場景中使用該名稱來替換參數。
希望您可以在這里使用 foo、bar 和 request 作為名稱來應對我,您的示例沒有足夠重要的內容來提取更好的名稱。
在此之后,我們將有
Scenario: Make a foo request
When I perform a foo request
和這個的 ruby 實現(你必須自己翻譯成 java)將是
module RequestStepHelper
def foo_example_params
{
param1: dummy,
param2: dummy,
...
}
end
def perform_request(params : {})
# process hash to make correct call
...
end
end
World RequestStepHelper
When 'I perform a foo request' do
perform_request(foo_example_params)
end
所以現在已經從您的功能文件中刪除了所有垃圾,現在可以專注于描述正在發生的事情以及為什么它很重要。此外,所有參數的處理現在都在代碼中完成,您可以使用更多的功能,并且可以做一些事情,比如獲取一組現有的參數并修改它們,例如foo_example_params.except(param1)。
添加回答
舉報