Параллельные сценарии Cucumber / Watir в * Windows * - PullRequest
3 голосов
/ 05 мая 2011

Есть мысли о том, что я могу сделать / использовать для параллельного запуска сценариев огурца в Windows?До сих пор я пытался (со следующими выводами):

WatirGrid

Необходимо использовать потоки Ruby, чтобы фактически работать в "параллельном режиме".Это вынуждает нас обернуть объект браузера в поток и, следовательно, недоступен после закрытия блока потока.(Невозможно передать объект Browser в среду огурца)

Hydra:

Требуется SSH (и открытый ключ) доступ к удаленным блокам (т. Е. Без Windows)

Селеновая сетка:

Сверхтяжелая и не может найти чистый путь испытания огурца

TestJour:

Требуется Bonjour (недоступно для Windows)

1 Ответ

1 голос
/ 06 мая 2011

Re Watirgrid ...

С тех пор я добавил итеративный метод, которому можно передать блок кода watir для выполнения с удаленными объектами браузера.Таким образом, объекты браузера становятся повторно используемыми между шагами.Обновленный подробный пример с огурцом находится здесь:

https://github.com/90kts/watirgrid/blob/master/examples/cucumber/step_definitions/example_steps.rb

Ваши шаги в конце выглядят так:

Given /^navigate to the portal$/ do
  @grid.iterate {|browser| browser.goto "http://gridinit.com/examples/logon.html" }
end

When /^they enter their credentials$/ do
  @grid.iterate do |browser|
    browser.text_field(:name => "email").set "tim@mahenterprize.com"
    browser.text_field(:name => "password").set "mahsecretz"
    browser.button(:type => "submit").click
  end
end

Then /^they should see their account settings$/ do
  @grid.iterate do |browser|
    browser.text.should =~ /Maybe I should get a real Gridinit account/
  end
end

Если у вас есть какие-либо вопросы, не стесняйтесь отбрасыватьмне линию.У нас также есть коммерческая реализация watirgrid для EC2, доступная для бета-версии на http://gridinit.com/public/examples, так что следите за обновлениями с различными тестовыми средами!

Помните, что помощники по управлению / итерации в последней версии watirgridv1.1.2

В качестве альтернативы сделать это параллельно с различными сценариями для каждого из провайдеров, я просто хотел бы иметь support / env.rb, который выглядит примерно так:

require 'watirgrid'
require 'rspec/expectations';

ENV["GRID"] = 'true'
ENV["controller_uri"] = "druby://10.0.1.3:11235"

if ENV["GRID"] then
  params = {}
  params[:controller_uri]   = ENV["controller_uri"]
  params[:browser]          = 'chrome' # type of webdriver browser to spawn
  grid ||= Watir::Grid.new(params)
  grid.start(:initiate => true, :quantity => 1, :take_all => true)
else
  @browser ||= Watir::Browser.new :chrome
end

Before do |scenario|
  @browser = grid.providers.first
end

at_exit do
  grid.iterate do |browser|
    browser.close
  end
  grid.release_tuples
end

Примечание. Я использую :take_all => true для получения эксклюзивного доступа к провайдеру и освобождаю его обратно в сетку at_exit ... Затем я бы вызывал свои сценарии из отдельного тестового прогона, используя CLI, возможно, в оболочкев сценарии bash или DOS, например

cucumber features --name "Name of scenario 1"
cucumber features --name "Name of scenario 2"
cucumber features --name "Name of scenario 3"
...
etc
...