Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 等待功能文件中的任务完成_Ruby On Rails_Cucumber - Fatal编程技术网

Ruby on rails 等待功能文件中的任务完成

Ruby on rails 等待功能文件中的任务完成,ruby-on-rails,cucumber,Ruby On Rails,Cucumber,我一直在为用RubyonRails开发的应用程序编写Cumber测试。应用程序提供一个服务器(vm)并等待结果(如成功或失败),然后显示结果。配置服务器有7-8种不同的情况(或场景) 我有两个问题 如何将这两个不同的场景大纲合并到一个场景中。因此,我不需要重复示例部分中的表格。我想为所有场景(示例)创建一个provisioning请求,然后等待15分钟,直到所有请求都得到配置,15分钟后检查所有场景是否通过或失败 由于这些测试需要花费更多的时间来完成,当我运行“bundle cumber”运行

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

我有两个问题

  • 如何将这两个不同的场景大纲合并到一个场景中。因此,我不需要重复示例部分中的表格。我想为所有场景(示例)创建一个provisioning请求,然后等待15分钟,直到所有请求都得到配置,15分钟后检查所有场景是否通过或失败
  • 由于这些测试需要花费更多的时间来完成,当我运行“bundle cumber”运行所有功能文件时,我怎么能跳过它们呢。我 不希望每次都运行以下测试
我已经使用下面的场景大纲和示例编写了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  |
场景大纲:创建新的服务器请求
给定用户位于“创建新服务器请求”页面上
当用户输入以下数据时
|数据中心||
|岩芯| ||
|记忆| |
然后他应该看到提交的请求
示例:
|数据中心|核心|内存|
|ABC | 2 | 1 GB|
|DEF | 4 | 2 GB|
|GHI | 8 | 4 GB|
|JKL | 4 | 2 GB|
场景:等待资源调配发生
给定用户等待15分钟
场景概要:验证新服务器请求
给定用户位于设置服务器页面上
当用户使用以下数据检查请求时
|数据中心||
|岩芯| ||
|记忆| |
然后,他应该看到服务器已配置
示例:
|数据中心|核心|内存|
|ABC | 2 | 1 GB|
|DEF | 4 | 2 GB|
|GHI | 8 | 4 GB|
|JKL | 4 | 2 GB|

阿努帕姆,我相信背景是你所需要的关键。使用后台设置要作为变量使用的服务器集,然后在场景中简单地引用这些服务器。我还将结合“给定用户在_____;页面上”,因为您可以将实现细节隐藏在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.hash将数据转换为更易于使用的数据格式

@server_set = table.hashes
至于不是每次都运行这些测试,我会设置一个cucumber@tag,用于排除耗时太长的场景。您还可以设置一个yaml配置文件来处理这个问题,然后在测试中调用适当的概要文件。有关示例,请参阅cumber文档


编辑:您也可以在第一步def上设置变量,但我喜欢使用背景来表示您不想重复的“数据”。

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.hash将数据转换为更易于使用的数据格式

@server_set = table.hashes
至于不是每次都运行这些测试,我会设置一个cucumber@tag,用于排除耗时太长的场景。您还可以设置一个yaml配置文件来处理这个问题,然后在测试中调用适当的概要文件。有关示例,请参阅cumber文档


编辑:您也可以在第一步def上设置变量,但我喜欢使用背景作为您不想重复的“数据”。

非常感谢Jeff的建议。还有一个问题,如何在步骤定义文件中提取表(包含2列以上)行?问题中的示例使用cumber::Ast::表。并将其传递到步骤定义。添加!只需使用实例变量(将在您的World对象上)和table.hash。这将使您成为一个哈希数组,您可以从中获取数据中心键、核心和内存库的值。还有一个问题,如何在步骤定义文件中提取表(包含2列以上)行?问题中的示例使用cumber::Ast::表。并将其传递到步骤定义。添加!只需使用实例变量(将在您的World对象上)和table.hash。这将使您成为一个哈希数组,您可以从中获取数据中心、核心和内存键的值