【问题标题】:Wait for a task to finish in cucumber feature file等待黄瓜特征文件中的任务完成
【发布时间】:2016-01-08 10:59:09
【问题描述】:

我一直在为使用 Ruby on Rails 开发的应用程序编写黄瓜测试。应用程序提供一个服务器(vm)并等待结果(如成功或失败)并显示结果。供应服务器有 7-8 种不同的情况(或场景)。

我有两个问题

  • 如何将这两种不同的场景大纲合二为一。这样我就不需要重复示例部分中的表格。我想为所有场景(示例)创建一个供应请求,然后等待 15 分钟,直到所有请求都被供应,然后在 15 分钟后检查所有场景是通过还是失败。
  • 由于这些测试需要更多时间才能完成,当我运行运行所有功能文件的“bundle cucumber”时如何跳过它们。一世 不想每次都运行以下测试。

我使用以下场景大纲和示例编写了黄瓜测试。

Scenario Outline: Create A New Server Request
Given user is on create new server request page
When user enters follwing data

| Datacenter             | <Datacenter> |
| Cores          |<Cores>   |                                                   |
| Memory             | <Memory> |               

Then he should see request submitted


Examples: 
|DataCenter |Cores| Memory|
| ABC       | 2   | 1 GB  |
| DEF       | 4   | 2 GB  |
| GHI       | 8   | 4 GB  |
| JKL       | 4   | 2 GB  |


Scenario: Wait till provisioning happens
Given user waits for 15 minutes

Scenario Outline: Verify a New Server Request
Given user is on provision server  page
When user check the request with follwing data

| Datacenter             | <Datacenter> |
| Cores          |<Cores>   |                                                   |
| Memory             | <Memory> |               

Then he should see servers are provisioned

Examples: 
|DataCenter |Cores| Memory|
| ABC       | 2   | 1 GB  |
| DEF       | 4   | 2 GB  |
| GHI       | 8   | 4 GB  |
| JKL       | 4   | 2 GB  |

【问题讨论】:

    标签: ruby-on-rails cucumber


    【解决方案1】:

    Anupam,我相信背景是您需要的关键。使用背景设置您的服务器集作为变量使用,然后在您的场景中简单地引用这些服务器。我还会结合“假设用户在 ____ 页面”,因为您可以将该实现细节隐藏在您的 stepdef 中以提供、检查队列并检查结果。

    Background: The set of servers to provision
    Given the following set of servers are to be provisioned
    |DataCenter |Cores| Memory|
    | ABC       | 2   | 1 GB  |
    | DEF       | 4   | 2 GB  |
    | GHI       | 8   | 4 GB  |
    | JKL       | 4   | 2 GB  |
    
    @slow
    Scenario: Provision New Servers
    When a user provisions the set of servers
    Then the user should see the set of servers submitted
    When the user waits 15 minutes
    Then the user should see the set of servers have been provisioned
    

    要在您的步骤中保留背景数据,只需将其设置为 World 对象上的实例变量。我可能会使用 Cucumber::Ast::Table.hashes 将数据转换为更易于使用的数据格式。

    @server_set = table.hashes
    

    至于不是每次都运行这些测试,我会设置一个黄瓜@tag,您可以使用它来排除耗时过长的场景。您还可以设置一个 yaml 配置文件来处理这个问题,然后在您的测试中调用适当的配置文件。有关示例,请参阅黄瓜文档。 https://github.com/cucumber/cucumber/wiki/cucumber.yml

    编辑:您也可以在第一步定义中设置变量,但我喜欢将背景用于您不想重复的“数据”。

    【讨论】:

    • 非常感谢 Jeff 的建议。还有一个问题,如何在步骤定义文件中提取表(超过 2 列)行?问题中的示例使用 Cucumber::Ast::Table。它被传递给步骤定义。
    • 已添加!只需使用实例变量(将在您的 World 对象上)和 table.hashes。这应该使您成为一个哈希数组,您可以从中获取数据中心、核心和内存键的值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多