首页 文章

等待任务在黄瓜功能文件中完成

提问于
浏览
0

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

我有两个问题

  • 如何将这2个不同的场景轮廓分成一个 . 所以我不需要重复示例部分中的表格 . 我想为所有场景(示例)创建一个provsioning请求,然后等待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  |

1 回答

  • 0

    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

    编辑:你也可以在你的第一步def设置varioable,但我喜欢使用你不想重复的“数据”的背景 .

相关问题