我一直在为Ruby on Rails开发的应用程序编写黄瓜测试。应用程序提供服务器(vm)并等待结果(如成功或失败)并显示结果。配置服务器有7-8种不同的情况(或场景)。
我有两个问题
我通过使用场景概述和示例编写了黄瓜测试,如下所示。
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 |
答案 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,但我喜欢使用你不想重复的“数据”的背景。