黄瓜:如何只为多个场景执行一次背景

时间:2011-12-12 17:34:48

标签: cucumber cuke4duke

我有一个背景部分的功能,需要几分钟;它通过API在远程系统上设置状态。我想让它只针对所有后续场景执行一次,而不是针对每个场景执行。我的场景不会改变任何状态,它们是只读的,因此从一个场景到另一个场景不会产生任何副作用。

我没有使用rails,也没有本地数据库,所以无法处理数据库事务。

我目前正在考虑在env.rb中使用Before做一些事情,并根据标签的隐式约定/含义来设置一些条件代码,例如: “@ background-only-once”,可以让一些自定义代码跳过这些步骤,或者它可以在步骤定义中执行不同的逻辑 - 但是尝试在执行中共享它有点讨厌。

思想?

2 个答案:

答案 0 :(得分:3)

这并没有真正解决它,但这就是我在那种情况下所做的事情。

我转到一个场景,然后标记不同的场景"在评论中。如果您只是评论其他方案标题,那将会发生什么。

这是一个评论第二个场景,并在第一个特征结束时运行测试状态的示例

Feature: Admin can manage organizations
  In order to ...

Scenario: can add
  When I log into the admin
  When I follow "Organizations"
  When I follow "Add"

  When I fill in "Email" with "red@cross.com"
  When I fill in "Name" with "Red Cross"
  When I press "Save"
  Then I should see "success"

# Scenario: can edit
  When I follow "Red Cross"
  When I fill in "Name" with "Green Cross"
  When I press "Update"

  Then I should see "success"

答案 1 :(得分:0)

如果您不希望为每个场景执行背景,那么它不是背景,是吗?

如果您每次运行Cucumber方案时都在调用远程服务,不会这样做。相反,请使用http://marnen.github.io/webmock-presentation/webmock.html中所述的Webmock和VCR。您的测试将更快,更准确。