开发者

In selenium ruby tests can I combine the setup and teardown methods into one location for all my tests?

In my ruby Selenium Tests there is a lot of the same code in every test. How can I best share code between tests? For example my setup and teardown methods are the same in every file, how can I remove them from every file into one shared file or is that even possible?

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

I've tried putting setup in a shared module and a required file but both present different problems with inheritance of the other methods that need开发者_运维技巧 access to the @selenium object that is started. What would be a good design if there is one for sharing the code?


I'm not really sure what test framework you're using, but in rspec you could place it into your spec_helper file and just do a before(:each) / after(:each). I'd check the callback documentation for your framework of choice.


For test unit framework - it seems to work to create a SharedTest class to inherit from Test::Unit::Testcase with setup and teadown methods. Then just subclass the test files SharedTest. The only negative consequence I've found is I had to add a test_default method that does nothing in SharedTest to get it to work. If I name my test method test_default that overides it and seems ok, but not very descriptive...

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

I'm still open to better solutions but this seems to be working for me.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜