Могу ли я выполнить несколько тестов RSpec / Selenium по порядку без сброса состояния браузера? - PullRequest
0 голосов
/ 24 августа 2010

Итак, я только начал использовать Steak, который, в свою очередь, использует Capybara, который, в свою очередь, использует Selenium.

Итак, я слышал, что это хорошая практика RSpec - разбивать тестирование на множество маленьких it-предложений, каждый из которых тестирует небольшой фрагмент функциональности. Но тогда тестовый прогон занимает больше времени, потому что для каждого теста повторяются одни и те же шаги.

Допустим, я тестирую некоторые функциональные возможности ajax. Я хочу проверить это:

  • форма появляется при нажатии на определенную ссылку
  • появляются сообщения об ошибках, если я отправляю неверные данные в эту форму
  • появляется подтверждающее сообщение, если я отправляю правильные данные и т. Д.

Но если я разбил каждую из этих вещей на отдельные тестовые сценарии, то Selenium должен начать с нуля: он должен загрузить одну и ту же страницу три раза, щелкнуть ссылку, чтобы форма появилась три раза, и т. Д. мне кажется расточительным.

То, что я хотел бы сделать, это указать последовательность тестов, которые сохраняют состояние браузера, поэтому каждый тест продолжается с того места, где остановился предыдущий. Это возможно?

1 Ответ

1 голос
/ 01 апреля 2011

Это возможно. Одним из способов является переопределение метода посещения Capybara, отслеживание последнего URL-адреса и повторное посещение только при его изменении.

Что-то вроде:

module Capybara
  alias original_visit visit
  def visit(url)
    original_visit url if url != $last_url
    $last_url = url
  end
end

но делать это следует только в том случае, если вы действительно знаете, что делаете ...

...