我的应用程序具有权限,并且在特定权限打开时不需要运行某些测试,而在打开相同权限时需要运行某些测试。
有办法做到这一点吗?或者我需要使用不同的框架吗?
最佳答案
在 Cucumber 中排除“测试”的标准方法是向它们添加标签来识别它们,然后在调用 Cucumber 时指定要包含/排除哪些标签。在您的示例中,您可以标记特定场景:
@needs_permission
Scenario: View users billing information
或者标记整个功能:
@needs_permission
Feature: Administrative area
Scenario: View users billing information
或者在场景大纲中标记某些示例:
Scenario Outline: Visit a page
Given I visit "<page>"
Examples: Don't need permission
| page |
| index |
| sitemap |
@needs_permission
Examples: Do need permission
| page |
| admin |
现在,当您运行 Cucumber 时,您可以根据需要排除这些标签:
当权限打开并且您想要运行所有测试时:
cucumber .
当权限关闭并且您想要排除需要它的测试时:
cucumber . -t ~@needs_permission
如果您确实提前不知道,我使用的另一种结果混合结果是,如果某个步骤不适用于当前场景(例如,
Given /^I visit some page which needs permission$/ do
pending "Permissions aren't enabled - skipping" unless permissions_enabled?
end
这会将步骤标记为“待处理”,这实际上意味着“未完全实现”,这并不理想,特别是如果您有很多这样的步骤 - 可能很难确保其他未实现的步骤不会意外蔓延并被您故意标记的所有内容隐藏。
关于ruby-on-rails - Cucumber场景下的if语句怎么做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7323608/