【问题标题】:Determine if a cucumber scenario has pending steps确定黄瓜场景是否有待处理的步骤
【发布时间】:2014-10-28 07:53:13
【问题描述】:

我想在“After”场景挂钩中检索场景状态。我注意到.failed?方法不将未决步骤视为失败步骤。

那么我如何确定一个场景没有完全执行,因为它失败了,或者因为某些步骤没有实现/定义。

【问题讨论】:

    标签: cucumber gherkin


    【解决方案1】:

    您可以使用状态方法。 status的默认值为:skipped,失败的为:failed,通过的步骤为:passed。所以你可以这样写:

    do sth if step.status != :passed
    

    此外,如果您使用 !step.passed?,它会执行相同的操作,因为它只检查 :passed 状态。

    关于该主题,您还可以查看这篇关于向客户演示您的功能规格的帖子:http://multifaceted.io/2013/demo-feature-tests/

    【讨论】:

    • 好的,但是由于没有调用 AfterStep 挂钩,我需要使用 After 场景挂钩并循环所有步骤,对吗?但是我不知道当场景是大纲时如何访问步骤(收到的场景参数没有“步骤”方法)
    • 当我尝试访问“steps”方法时,出现以下错误:private method steps' called for #<Cucumber::Ast::ScenarioOutline:0x007ff2cc374b70> (NoMethodError) /Users/...features/support/hooks.rb:126:in After'
    • 第二个链接坏了。
    【解决方案2】:

    LiohAu,您可以在场景本身而不是单个步骤上使用“状态”方法。试试这个:在钩子中,添加

    After do |scenario|
      p scenario.status
    end
    

    这将给出如下状态: 任何未实施/未定义的步骤,它会给你:undefined 场景失败(定义所有步骤时):失败 场景通过:通过

    使用相同的钩子,它将为您提供场景大纲的状态,但对于每个示例行(因为对于每个示例行,它是一个单独的场景)。因此,如果您想要整个大纲的结果,则需要捕获所有示例行的结果并相应地计算最终结果。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      相关资源
      最近更新 更多