我有一个背景部分的功能,需要几分钟;它通过API在远程系统上设置状态。我想让它只针对所有后续场景执行一次,而不是针对每个场景执行。我的场景不会改变任何状态,它们是只读的,因此从一个场景到另一个场景不会产生任何副作用。
我没有使用rails,也没有本地数据库,所以无法处理数据库事务。
我目前正在考虑在env.rb中使用Before做一些事情,并根据标签的隐式约定/含义来设置一些条件代码,例如: “@ background-only-once”,可以让一些自定义代码跳过这些步骤,或者它可以在步骤定义中执行不同的逻辑 - 但是尝试在执行中共享它有点讨厌。
思想?
答案 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。您的测试将更快,更准确。