亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

具有眾多參數的黃瓜步驟

具有眾多參數的黃瓜步驟

墨色風雨 2023-02-23 18:03:38
有沒有辦法將參數組合成一個參數,例如傳遞一個產生所有參數的數據結構?例如,我想避免使用帶有太多參數的方法:Scenario Outline: My scenario has too many parameters    When I perform my request with these inputs: <param1>, <param2>, <param3>, <param4>, <param5>, <param6>, <param7>, <param8>, <param9>, <param10>, <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   |然后是方法:@Given("^When I perform my request with these inputs: (.+), (.+), (.+), (.+), (.+), (.+), (.+), (.+), (.+), (.+), (.+)$")public void tooMany(String param1, String param2, String param3, String param4, String param5, String param6, String param7, String param8, String param9, String param10, String param11)  {...有沒有更好的方法來傳輸那么多輸入?
查看完整描述

2 回答

?
Helenr

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。


查看完整回答
反對 回復 2023-02-23
?
慕萊塢森

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)。


查看完整回答
反對 回復 2023-02-23
  • 2 回答
  • 0 關注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號