Огурец + селен не получается случайно - PullRequest
4 голосов
/ 08 июня 2009

Мои тесты на селен, например, не проходят случайно. В качестве примера у меня есть этот сценарий

Scenario: I should be able to edit a user
  Given I created a user with the login "test@example.com"
  And I am viewing the user with login "test@example.com"
  Then I should see "Edit this user"
  When I click "Edit this user"
  Then I should be editing the user with login "test@example.com"
  When I press "Update"
  Then I should be viewing the user with login "test@example.com"
  And I should see "User was successfully updated."

Это, наряду с другими, работает нормально, используя основной режим webrat: rails. В селене, линия

Then I should be editing the user with login "test@example.com"

и

Then I should be viewing the user with login "test@example.com"

происходит сбой случайным образом, при этом иногда первый сбой происходит, в других случаях происходит сбой секунд. Использование сайта вручную приводит к правильной работе, и, как я уже сказал, режим webrat / rails работает нормально.

Rails 2.2.2 Огурец 0.3.7 селен 1.1.14 (исправлен для работы с FF3)

Дополнительная информация:

Scenario: I should be able to edit a user                         # features/admin_priviledges.feature:26
  Given I created a user with the login "test@example.com"        # features/step_definitions/global_steps.rb:18
  And I am viewing the user with login "test@example.com"         # features/step_definitions/global_steps.rb:60
  Then I should see "Edit this user"                              # features/step_definitions/webrat_steps.rb:93
  When I click "Edit this user"                                   # features/step_definitions/webrat_steps.rb:18
  Then I should be editing the user with login "test@example.com" # features/step_definitions/global_steps.rb:66
    expected: "/users/8/edit",
         got: "/users/8" (using ==)
    Diff:
    @@ -1,2 +1,2 @@
    -/users/8/edit
    +/users/8
     (Spec::Expectations::ExpectationNotMetError)
    features/admin_priviledges.feature:31:in `Then I should be editing the user with login "test@example.com"'
  When I press "Update"                                           # features/step_definitions/webrat_steps.rb:14
  Then I should be viewing the user with login "test@example.com" # features/step_definitions/global_steps.rb:66
  And I should see "User was successfully updated." 

Then /^I should be (editing|viewing) the (\w+) with (\w+) "([^\"]*)"$/ do |action,model,field,value|
  func = make_func(action,model)
  m = find_model_by_field_and_value(model,field,value)
  URI.parse(current_url).path.should == eval("#{func}(m)")
end

Это соответствующие шаги. Нажатие «Обновить» является стандартным шагом вебрат (click_button)

Ответы [ 2 ]

7 голосов
/ 09 июня 2009

Изменение шага вебрата с

When /^I press "([^\"]*)"$/ do |button|
  click_button(button)
end

до

When /^I press "([^\"]*)"$/ do |button|
  click_button(button)
  selenium.wait_for_page_to_load
end

это работает. Говоря селену ждать исправления!

2 голосов
/ 08 июня 2009

Вы смотрели на сроки запросов? Моя интуиция говорит, что селен движется слишком быстро.

Можете ли вы опубликовать свои шаги огурца и сообщения об ошибках и подробности журнала для каждой ошибки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...