【问题标题】:How to define steps for Scenario Outline with ruby如何使用 ruby​​ 定义场景大纲的步骤
【发布时间】:2017-04-19 13:31:07
【问题描述】:

我有一个注册表,需要使用黄瓜和红宝石对其进行测试。 我决定在表格中使用具有不同值的场景大纲:

Scenario Outline: Log in with valid data
   Given I am on the Sign up Form
   When I provide <Email>
   And I provide Confirm <СEmail>
   And I provide <Password>
   And I provide Confirm <СPassword>
   And I click on Register button
   Then I registered to the site

Examples:
| Email                | CEmail              | Password | CPassword       |
| vip17041@yopmail.com |vip17041@yopmail.com | 123      | 123             |
| vip17042@yopmail.com |vip17042@yopmail.com |123       | 123             | 

现在我需要创建步骤定义。在步骤定义中,我需要将表中的字段值放入其中。 我怎么能那样做?之前我使用了下一个方法:

    When(/^I provide vip(\d+)@yopmail\.com$/) do |email|
         browser.text_field(:name, "Email").set("email@yopmail.com")

但是我如何设置而不是硬编码电子邮件 - 来自我的表格的电子邮件?

谢谢

【问题讨论】:

    标签: ruby cucumber


    【解决方案1】:

    如果您希望将捕获与电子邮件地址合并:

    When(/^I provide (vip\d+)@yopmail\.com$/) do |email|
         browser.text_field(:name, "Email").set("#{email}@yopmail.com")
    end
    

    这会将捕获的文本(“vip”字面意思加上任意数量的长度为一或多个的数值)与字符串“@yopmail.com”连接起来

    关于场景大纲如何工作的说明

    Scenario Outline 将从示例表中获取行,并简单地使用列来创建单独的场景,这些场景使用与列标题匹配的值代替占位符。

    例如:

    Scenario Outline: A note
     Given I am logged in as <user>
     When I go to the homepage
     Then I should see "Welcome Back, <display_name>"
    
    Examples:
    | user           | display_name |
    | rick@stley.com | Rick Astley  |
    | tammy1992      | Tammy Holmes |
    

    会转换成两种场景:

    Scenario: A note
     Given I am logged in as rick@stley.com
     When I go to the homepage
     Then I should see "Welcome Back, Rick Astley"
    
    Scenario: A note
     Given I am logged in as tammy1992
     When I go to the homepage
     Then I should see "Welcome Back, Tammy Holmes"
    

    这与编写普通场景没有什么不同,您使用的占位符只需完成您正在编写的步骤。

    我会如何写你的场景

    Cucumber 是一种工具,旨在弥合测试人员、开发人员和管理人员之间的对话鸿沟。

    Scenario Outline: Log in with valid data
       Given I am on the Sign up Form
       When I sign up with the email "<Email>" and password "<Password>"
       Then I should be able to log in as "<Email>" with password "<Password>"
    
    Examples:
    | Email                | Password |
    | vip17041@yopmail.com | 123      |
    | vip17042@yopmail.com | 123      |
    

    我们不必知道流程的每个单独步骤,功能文件显示了测试的意图。 这似乎是在寻找注册新帐户后是否可以登录,所以为什么不这样写呢?

    【讨论】:

      【解决方案2】:

      作为使用 Cucumber 多年的人,我建议您避免使用 Scenario Outlines。功能和场景用于以简单明了的方式表达意图,而不是使用表格进行编程。

      你可以把你的场景写成

      Scenario: I should be welcomed when I sign in
        Given I am registered
        When I sign in
        Then I should be welcomed
      

      好的场景会在标题中说明他们试图验证的行为,然后有与此行为一致的步骤。他们无需解释您的应用程序如何实现该行为。将这些信息放在您的场景中会使它们变得更长、更难实施并且更难以维护。

      这种简单场景的副作用是步骤定义更简单,更容易编写。这里不需要正则表达式的参数或表格解析。

      您可以在此处 (https://github.com/diabolo/cuke_up/tree/master/features) 看到此方法的一个简单示例,

      【讨论】:

        猜你喜欢
        • 2018-07-25
        • 2018-09-01
        • 2016-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多