Могу ли я объединить методы установки и демонтажа в одном месте для всех моих тестов в тестах на селен рубин? - PullRequest
0 голосов
/ 30 декабря 2010

В моем Ruby Selenium Tests много одинакового кода в каждом тесте. Как лучше всего делиться кодом между тестами? Например, мои методы настройки и удаления одинаковы в каждом файле, как я могу удалить их из каждого файла в один общий файл или это вообще возможно?

def setup
    @verification_errors = []
    @selenium = Selenium::Client::Driver.new \
    :host => "#$sell_server",
    :port => 4444,
    :browser => "#$browser",
    :url => "http://#$network.#$host:2086/",
    :timeout_in_second => 60

    @selenium.start_new_browser_session
end

def teardown
    @selenium.close_current_browser_session
    assert_equal [], @verification_errors
end

Я пытался поместить установку в общий модуль и требуемый файл, но у обоих были разные проблемы с наследованием других методов, которым нужен доступ к запущенному объекту @selenium. Что было бы хорошим дизайном, если бы был один для совместного использования кода?

Ответы [ 2 ]

0 голосов
/ 04 января 2011

Для инфраструктуры тестовых модулей - кажется, что работает создание класса SharedTest для наследования от Test :: Unit :: Testcase с методами setup и teadown. Затем просто создайте подкласс тестовых файлов SharedTest. Единственное отрицательное последствие, которое я обнаружил, это то, что мне пришлось добавить метод test_default, который ничего не делает в SharedTest, чтобы заставить его работать. Если я назову свой тестовый метод test_default, который переоценивает его и выглядит нормально, но не очень наглядно ...

sharedtest.rb

class SharedTest < Test::Unit::Testcase
  def setup
    @verification_errors = []
    @selenium = Selenium::Client::Driver.new \
    :host => "#$sell_server",
    :port => 4444,
    :browser => "#$browser",
    :url => "http://#$network.#$host:2086/",
    :timeout_in_second => 60

    @selenium.start_new_browser_session
 end

 def teardown
    @selenium.close_current_browser_session
    assert_equal [], @verification_errors
 end

 def test_default
   #puts self
 end
end

T01_testcasename.rb

 class Test_01_whatever < SharedTest
   def test_default
      #test code
   end

Я все еще открыт для лучших решений, но, похоже, это работает для меня.

0 голосов
/ 30 декабря 2010

Я не совсем уверен, какой тестовый фреймворк вы используете, но в rspec вы можете поместить его в свой файл spec_helper и просто сделать before (: each) / after (: each). Я бы проверил документацию по обратному вызову для вашего фреймворка.

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