这是我遇到的一个问题.我编写的测试是针对具有不断变化的BE数据库的UI,我目前无法获得静态数据.这意味着有时可能没有测试数据.不是通过不是失败,只是无法运行.
我发现最好的方法是调用黄瓜待定.
示例测试:
Scenario: Test the application
Given my application has data
When I test something
Then I get a result
Run Code Online (Sandbox Code Playgroud)
示例步骤def:
Given /^my application has data$/ do
pending unless application.has_data?
end
Run Code Online (Sandbox Code Playgroud)
这些是我能看到的结果:
201 scenarios (15 pending, 186 passed)
1151 steps (15 pending, 1136 passed)
Run Code Online (Sandbox Code Playgroud)
值得注意的是,我有额外的调试并且标记了这些测试,以便我可以在任何时候再次运行这些待处理的测试.
希望这有帮助,本.
小智 5
对于仍在寻找答案的人:除了使用pending或特定的配置文件跳过具有某些标签的方案之外,还有至少2种方法可以实现这一点.
我可以理解为什么你需要这个,因为我有类似的问题并得到了解决方案,因此值得分享.在我的情况下,我有一个功能预计可以在3/10设备上使用,并且预计在剩余的7个设备上不可用.
使用'待定'跳过的注意事项:
pending.pending场景与跳过但标记的pending场景区分开来因此,我宁愿在执行期间跳过它们,具体取决于使用哪种浏览器的条件.我也不希望有太多特定于某些浏览器/设备的配置文件
方案:
这是一个关于黄瓜的已知忽略的有趣事实(来自https://github.com/cucumber/cucumber/wiki/cucumber.yml):
cucumber.yml文件由ERb预处理; 这允许您使用ruby代码在cucumber.yml文件中生成值
在此基础上,用一些独特的东西标记你的场景,比方说 @conditional
在黄瓜配置(cucumber.yml)的开头,在所提到的任何配置文件之外应用条件逻辑:
<% included = (ENV['BROWSER'] =~ /chrome/) ? "-t @conditional" : "-t ~@conditional" %>
included 只是一个变量,根据条件,它将包含要包含/排除的标记值
现在在默认配置文件中使用此条件变量
default: <%= included %>
因此,现在您的默认配置文件将使用条件逻辑标识的包含/排除测试.
有条件地选择要在rake任务中包含/排除的标签,并将它们传递给黄瓜执行.
希望这可以帮助.
您可以在启动 Cucumber 之前检查条件,然后使用一个配置文件来跳过带有某些标签的场景。将其放入您的 cucumber.yml 中:
default: --tags ~@wip --tags ~@broken --no-source --color
limited: --tags @core --tags ~@wip --tags ~@broken --no-source --color
Run Code Online (Sandbox Code Playgroud)
将 @core 替换为您要运行的 cuke 所使用的任何标签(或使用 ~ 排除 cuke)。然后从 shell 脚本运行受限配置文件来检查条件:
cucumber -p limited
Run Code Online (Sandbox Code Playgroud)