当前位置: 首页 > 知识库问答 >
问题:

如何“跳过”带有cucumber标签的场景?

高建本
2023-03-14

我目前有一个项目,里面有一大堆cucumber。特征文件,其中许多场景都被破坏。这些场景用< code>@broken标记,我们通过用< code>-t ~@broken执行cucumber来避免运行它们。不幸的是,当我们检查cucumber输出时,这些场景实际上是不可见的。它们不会显示为通过、失败或跳过。我想要的是在cucumber输出中包含这些场景的计数。它们应该显示为“跳过的”测试,而不是根本不显示。

我尝试了什么:

Before('@broken') do |scenario|
  pending
end

但这引发了一个Cucumber::P ending异常,如果没有发现,它只是失败了。

我知道我可以写出这样的步骤:

Given /^PENDING/ do
  pending
end

然后浏览我的所有特性文件,将这一步添加到每个带有< code>@broken标记的场景中。尽管这看起来很疯狂。它不符合“步骤”应该是什么的语义(更不用说它需要对我的所有特征文件进行广泛的更改,而不仅仅是在标签上添加一个钩子)。

我可以用一个标签来做这件事吗?

共有2个答案

傅玮
2023-03-14

编辑:

根据您的评论,您正在使用cucumber-1.3.10。该版本无法实现。

在cucumber-jvm和cucumber-js中,它按预期工作,将场景标记为挂起,但令人惊讶的是,在ruby中,如果挂起异常从之前(或之后)挂钩抛出,它将场景标记为失败而不是挂起。

所以你的第一个建议是正确的。您应该使用标记的钩子。

Before('@broken') do
 pending
end

但是你必须更新你的gemfile来使用最新版本的cucumber,也就是2.0.0.beta.3。

source 'https://rubygems.org'
group :test do
  gem 'cucumber', '2.0.0.beta.3'
end

那么输出将如预期的那样,被标记为待定(不跳过,因为没有跳过的场景,只有通过/失败/待定/未定义/跳过的步骤和通过/失败/待定/未定义的场景)。

希望这有帮助。

仲孙超
2023-03-14

虽然这个问题很老,但它仍然是谷歌的最爱——所以为了未来访问者的利益,我分享这个。

我正在标记我的场景,然后在我的“step_definitions/hooks.rb”文件中,我有如下内容:

Before('@proxy') do 
  skip_this_scenario unless proxy_running?
end

运行时,将正常跳过该方案。

1 scenario (1 skipped)
 类似资料:
  • cucumber场景使用JUnit运行。 我有一个用例,需要根据Jira票据的状态跳过特定的Cumber场景。然后,我需要将该场景标记为在html报告中传递。 我可以使用PendingException()或AssumptionViolatedException()轻松跳过场景,两者都可以正常跳过场景执行并将步骤标记为跳过。但是场景本身将被标记为失败,我希望它被通过。 无论如何,我可以做到这一点?

  • 然后跳过用@wip和@test标记的场景。 所以,我想知道,是否可以跳过单个标签中的两个或多个标签,即第1点提到的标签?

  • 我是IntelliJ和Cucumber的新手。 如何在IntelliJ中仅运行带有特定标记的场景? 我看到有这样一个命令: 但我更喜欢使用IDE UI。

  • cucumber中的多个标签不会运行这些场景。 我有两个不同的标签,在同一个功能文件下标记为两个不同的场景。我尝试使用cucumber tages命令运行标记的两个场景 cucumber--标签@计费--标签@重要 当我运行这个时,cucumber不识别场景,它提供如下输出 但是当我单独运行标签时,比如< code>cucumber - t @billing,cucumber能够识别并运行这个场景

  • 我有一个如下结构的场景: 如您所见,在第二个示例中有一个参数“被忽略”。如果我在运行时检测到这个关键字,我希望跳过出现关键字的步骤。 目前我使用这个: 如果存在IGNORED关键字,则此步骤将设置为PASSED。相反,我想要的是将这单个步骤标记为SKIPPED,并且仍然执行以下步骤,然后根据其他步骤的状态将完整的测试场景标记为PASSED或FAILED。 所以我的问题是: 有没有办法手动将 Cuc

  • 有没有办法让我有条件地跳过Cucumber java中的场景? 在下面的图片中,当新闻发布部分没有可用数据时,我想跳过为数据检查编写的场景。 我计划首先检查没有可用数据的场景,如果它成功执行,然后跳过其余的场景。 添加功能文件以获得更多理解: 背景:给定主页显示当我导航到“XYZ”菜单时,应显示“新闻稿”部分 在上述文件中,如果@News 和“新闻稿”部分是否应该检查无数据存在 返回肯定的结果,然