2016-01-08 7 views
0

Я писал тесты огурца для приложения, разработанного в Ruby on Rails. Приложение устанавливает сервер (vm) и ждет результата (например, успех или сбой) И отображает результат. Для обеспечения сервера имеется 7-8 разных случаев (или сценариев).Ждите выполнения задачи в файле с огурцами

У меня есть 2 вопроса

  • Как я могу клуб эти два различные сценарии описываются в одно. Так что мне не нужно повторять таблицу в разделе «Примеры». Я хотел создать предварительные запросы для всех сценариев (Примеры), а затем дождаться 15 минут, пока все запросы не будут предоставлены, и через 15 минут проверьте, не прошли или не прошли все сценарии.
  • Поскольку эти тесты занимают больше времени, как можно пропустить их, когда я запускаю «огурец пучка», который запускает все файлы функций. I не хотят каждый раз запускать следующий тест.

Я написал тесты огурца, используя схему сценария и примеры, как показано ниже.

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

Anupam, я считаю, что фон содержит ключ к тому, что вам нужно. Настройте свой набор серверов для работы с переменной, используя фон, а затем просто обратитесь к тем, которые вы использовали во время своего сценария. Я бы также объединил «учитывая, что пользователь находится на странице ____», поскольку вы можете похоронить эту деталь реализации в своем шаге, чтобы обеспечить, проверить очередь и проверить результат.

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

Редактировать: вы также можете настроить varioable на первом шаге, но мне нравится использовать фон для «данных», который вы не хотите повторять.

+0

Большое спасибо за предложение Джеффа. Еще один вопрос: как извлечь таблицу (с более чем двумя столбцами) в файле определения шага? В примере в вопросе используется таблица Cucumber :: Ast :: Table. И он переходит к определению шага. –

+0

Добавлено! Просто используйте переменную экземпляра (которая будет находиться на объекте World) и table.hashes. Это должно сделать вам массив хэшей, которые вы можете получить значения для ключей центра данных, ядер и памяти –