【问题标题】:How to skip Cucumber steps?如何跳过 Cucumber 步骤?
【发布时间】:2012-12-21 10:10:57
【问题描述】:

我有这样的场景:

  1. 鉴于我转到此页面
  2. 当我输入黄瓜时
  3. 然后我点击
  4. 那我应该看到文字了
  5. 我不应该看到这条线

如果我运行这个场景,它将执行所有 5 个步骤。但我想跳过第 4 步(然后我应该看到文本)并执行第 5 步。

请给我你的建议。提前致谢。 :)

【问题讨论】:

  • 我同意@Ernest 在下面的回答;您似乎要问的是 Cucumber 的错误用例。很想知道你为什么想要这个功能。
  • 感谢您的回复 :-) 我的项目中需要此功能。我该如何处理这些情况?给我你的建议。

标签: cucumber


【解决方案1】:

TL;DR - 不要这样做 - 你(可能)弄错了。而且你不能(容易)做到这一点。正如 Aslak 所写(Cucumber 的主要创造者之一):

一个步骤可以产生以下结果:

  • 未定义(没有匹配的 stepdef)
  • 待处理(抛出 PendingException 的匹配 stepdef)
  • 通过(不抛出任何东西的匹配 stepdef)
  • 失败(匹配的 stepdef 引发不是 PendingException 的异常)
  • 已跳过(引发任何异常(未定义、待处理或失败)的步骤之后的步骤)

您要求的是一种新的结果 - 被忽略。它可能是 通过抛出 IgnoredException 来实现。这将意味着 跳过必须更改为:(步骤之后的步骤 抛出任何异常(未定义、挂起或失败) - 除非 异常是 IgnoredException)

我不确定我是否喜欢这个。听起来比它更复杂 需要是。你已经掌握了一些必要的信息 有问题 - 您的步骤将失败或待处理。我没有看到 继续执行以下步骤的价值。你还是要 执行失败/未决步骤。

只要提醒您“这里有工作要做”,我 不要以为复杂的黄瓜告诉你什么种类 需要完成的工作...

阿斯拉克

整个讨论在这里:http://comments.gmane.org/gmane.comp.programming.tools.cucumber/10146

【讨论】:

  • 我不知道“待定”,这很有帮助。谢谢。
【解决方案2】:

我不得不根据环境有条件地跳过步骤。我使用next 跳过步骤。这是一个关于如何做你想做的事的例子。

Then /^I should see the text/$ do
    next if @environment == 'no text'

    ...
       <The actual step definition>
    ...
end

【讨论】:

  • 您能详细说明一下吗?像我们可以通过在“”部分中定义它来更进一步吗?我们如何定义它?
  • 'next' 跳过下面的所有内容,它有点像'return',这也可能有效。像往常一样编写步骤,但在步骤的第一行,像上面那样做一个“if”语句,如果你不想运行下面的代码。
  • 我不明白,当我像Invalid next (SyntaxError) 一样输入next if 时,它会向我抛出一个错误
  • 几年没用过黄瓜了。如果 next 有新语法,请告诉我。您可以在一般步骤上致电next 吗?
猜你喜欢
  • 2019-11-19
  • 1970-01-01
  • 1970-01-01
  • 2018-02-08
  • 1970-01-01
  • 2017-08-03
  • 2019-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多