【问题标题】:Background in capybara tests using cucumber使用黄瓜进行水豚测试的背景
【发布时间】:2017-03-10 18:05:04
【问题描述】:

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

在水豚测试中使用黄瓜写“背景”是什么意思?为什么我们要写“背景”?可以避免吗?

-> 和test数据库有关系吗?还是作为“场景”的数据库?

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!"

【问题讨论】:

    标签: ruby-on-rails cucumber capybara


    【解决方案1】:

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

    例如。在检查仪表板或个人资料页面内容之前,用户必须登录。因此,登录覆盖将在“背景”部分完成 然后你将有 2 个测试用例

    背景: // 获取用户登录

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

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

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

    对于不同的用户集,您可以使用场景大纲 这是一个例子:

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

    希望对你有帮助!!!

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 感谢您撰写本文。现在的问题是:如果我在后台写不同的姓名/电子邮件并在场景中写不同的名称/电子邮件怎么办?我也无法捕捉到背景和场景之间的关系。
      • 试着把背景想象成在场景之前执行的步骤。如果您看不到关系,那么也许您可以删除它?在上面的示例中,想法是使用可以在场景之间重用的特定用户来设置数据库。
      猜你喜欢
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多