Gherkin是否有相同的“每个”声明?在以下场景中,我正在测试的页面有多个日期字段,我想在其上运行相同的测试示例。
以下是我想要建模的方案。
场景大纲:修改日期控件的精度值
Given I have just added a record
When I select <precision>
And I select <value>
Then <date> displays in the <date type> field
示例:
| date type | precision | value | date |
| Date 1 | Unknown | N/A | "Unknown" |
| Date 1 | Year | <current year> | <current year> |
| Date 1 | Month | <current month> | <current month, year> |
| Date 1 | Day | <current day> | <current month/day/year> |
| Date 2 | Unknown | N/A | "Unknown" |
| Date 2 | Year | <current year> | <current year> |
| Date 2 | Month | <current month> | <current month, year> |
| Date 2 | Day | <current day> | <current month/day/year> |
假设同一页面上有5个日期类型字段。似乎没有必要在表中复制/修改12行以覆盖日期3 - 日期5.这就是为什么我想知道是否存在“for each”等价物,以便我可以为每个日期类型执行相同的示例必须在Examples表中明确显示。或者也许我可以采用不同的方式构建场景?
感谢您提供的任何帮助!
答案 0 :(得分:5)
不,黄瓜的设计并没有考虑到循环。 Cucumber的范围是允许从用户角度定义应用程序预期。而且由于真正的用户不会“循环”,所以用黄瓜实现它是没有意义的
从程序上讲,可以做的是编写一个程序,为你的应用程序中的每个组合生成相同的黄瓜脚本。
答案 1 :(得分:2)
Cucumber不是为支持多列迭代而设计的,但它可以使其工作。在这里,我想尝试路径和角色的每个组合:
Scenario: cannot access paths
When I access "path" as "role" then I should see an error
| /path1 | user1 |
| /path2 | user2 |
| /path3 | user3 |
When(/^I access "path" as "role" then I should see an error$/) do |table|
paths, roles = table.raw.transpose.map { |e| e.reject(&:blank?) }
roles.each do |role|
step "I am logged in as #{role}"
paths.each do |path|
p "#{role} user visiting #{path}"
visit path
step 'I should see the privileges error'
end
end
end