在水豚测试的背景使用黄瓜

时间:2017-03-10 08:06:25

标签: ruby-on-rails cucumber capybara

学习新的Rails应用程序并为其编写一些测试。在编写测试时,遇到的问题是:

撰写'背景'是什么意思?在使用黄瓜的水豚测试?为什么我们写'背景'什么?可以避免吗?

- >它与测试数据库有什么关系吗?或者它是否作为" Scenario"?

的数据库
Feature: User signup
  As a user
  I want to sign in
  So I can use service features

**Background**:
  Given user with "jack@daniles.com" email and "qwerty" password

Scenario: Signing in with correct credentials
  When I go to sign in page
  And I fill in "email" with "jack@daniles.com"
  And I fill in "password" with "qwerty"
  And I click "Login" button
  Then I should see "Welcome, jack@daniles.com!"

2 个答案:

答案 0 :(得分:2)

后台在每个场景之前运行,但在任何Before Hooks之后运行。 它的DRY策略用于编写黄瓜场景。一套"先决条件"在运行实际测试用例之前应该执行的步骤。

例如。在检查仪表板或配置文件页面内容之前,用户必须登录。因此,登录的覆盖范围将在内部完成"背景"部分 然后你将有2个测试用例

背景: //获取用户登录

场景://访问仪表板页面.....

场景://访问个人资料页面....

了解更多信息https://github.com/cucumber/cucumber/wiki/Background

对于不同的用户组,您可以使用Scenario Outline 这是一个例子:

https://makandracards.com/makandra/18905-how-to-not-repeat-yourself-in-cucumber-scenarios

希望这有帮助!!!

答案 1 :(得分:1)

背景的要点是为几个场景定义一个共同的起点。如果你只有一个场景,那么它只能作为将事物分成几部分的手段。如果您熟悉单元测试框架,则它类似于xunit系列中的setup方法,如果使用rspec则类似于before block。为了运行测试, background 中的内容也可以在场景中。这是一种重用机制。

后台与测试数据库之间没有直接关系。从黄瓜运行的所有步骤都可能会打到数据库。 后台用于在数据库中设置良好的起始状态。根据您的黄瓜/水豚配置,数据库将在每个方案之间重置,并且在每个方案之前再次运行背景。