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)。
添加回答
举报