使用黄瓜的水豚测试背景

Background in capybara tests using cucumber

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

在使用黄瓜的水豚测试中写 'Background' 是什么意思?为什么我们要写 'Background' 呢?可以避免吗?

-> 跟测试数据库有关系吗?或者它是否用作 "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!"

Background 的重点是为几个场景定义一个共同的起点。如果您只有一个场景,那么它只能作为一种将事物分成几部分的方法才有意义。如果您熟悉单元测试框架,它类似于 xunit 系列中的设置方法,或者如果您使用 rspec,则类似于 before 块。出于 运行 测试的目的, background 中的内容也可以在场景中。它是一种重用机制。

背景与测试数据库没有直接关系。您 运行 来自黄瓜的所有步骤都可能会访问数据库。 background 用于在数据库中设置良好的起始状态。根据您的 cucumber/capybara 配置,数据库将在每个场景和背景之间重新设置 运行 在每个场景之前。

背景是 运行 在您的每个场景之前但在您的任何 Before Hooks 之后。 它用于编写黄瓜场景的 DRY 策略。一组 "prerequisite" 应该在 运行 实际测试用例之前执行的步骤。

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

背景: // 获取用户登录

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

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

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

对于不同的用户组,您可以使用场景大纲 这是示例:

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

希望对您有所帮助!!!