是否有 "for each" 或 Gherkin/Cucumber 的等效语法?
Is there a "for each" or equivalent syntax for Gherkin/Cucumber?
Gherkin 是否有等效的 "for each" 语句?在以下场景中,我正在测试的页面有多个日期字段,我想在这些字段上 运行 相同的测试示例。
这是我想要建模的场景。
场景大纲:修改日期控件的精度值
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个日期类型字段。似乎没有必要在 table 中再 copy/psate 12 行来涵盖日期 3 - 日期 5。这就是为什么我想知道是否有 "for each" 等价物以便我可以执行每个日期类型的示例相同,而不必在示例 table 中明确显示。或者我可以用不同的方式构建场景?
感谢您提供的任何帮助!
不,黄瓜在设计时并未考虑循环。 Cucumber 的范围是允许从用户的角度定义应用程序预期。由于真正的用户不会 "loop",因此在 Cucumber 中实现它没有意义。
从编程的角度来说,可以做的是编写一个程序,为应用程序中的每个组合生成相同的黄瓜脚本。
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
Gherkin 是否有等效的 "for each" 语句?在以下场景中,我正在测试的页面有多个日期字段,我想在这些字段上 运行 相同的测试示例。
这是我想要建模的场景。
场景大纲:修改日期控件的精度值
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个日期类型字段。似乎没有必要在 table 中再 copy/psate 12 行来涵盖日期 3 - 日期 5。这就是为什么我想知道是否有 "for each" 等价物以便我可以执行每个日期类型的示例相同,而不必在示例 table 中明确显示。或者我可以用不同的方式构建场景?
感谢您提供的任何帮助!
不,黄瓜在设计时并未考虑循环。 Cucumber 的范围是允许从用户的角度定义应用程序预期。由于真正的用户不会 "loop",因此在 Cucumber 中实现它没有意义。
从编程的角度来说,可以做的是编写一个程序,为应用程序中的每个组合生成相同的黄瓜脚本。
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