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

时间:2016-01-08 10:59:09

标签: ruby-on-rails cucumber

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

我有两个问题

  • 如何将这2个不同的场景轮廓加入到一个中。因此,我不需要重复示例部分中的表格。我想为所有场景创建一个provsioning请求(示例),然后等待15分钟直到所有请求都被配置,并在15分钟后检查是否所有场景都通过或失败。
  • 由于这些测试需要更长的时间才能完成,我怎样才能在运行时跳过它们?#34;捆绑黄瓜"它运行所有功能文件。一世 不想每次都进行以下测试。

我通过使用场景概述和示例编写了黄瓜测试,如下所示。

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 :(得分: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,但我喜欢使用你不想重复的“数据”的背景。