如何在不相互踩踏的情况下同时运行多个ruby文件?

时间:2015-05-26 15:29:28

标签: ruby rspec

我需要同时运行几个rb文件。每个文件的设置相同(下面的简化示例)

文件#1(总共有6个,每个约10个测试)

require_relative './spec_helper'
require_relative './tests'

    config.before(:each) do
        @driver = Selenium::WebDriver.for :firefox
        @base_url = get_url
    end  

    config.after(:each) do
        @driver.close
    end  

RSpec.describe 'File 1' do

  it 'test 1' do
       login
       verify element present
       logout
  end

  it 'test 2' do
       login
       verify element present
       logout
  end

   it 'test 3' do
       login
       verify element present
       logout
   end

end

所有文件分别运行得很好 - 但是当同时运行时,他们最终会在后钩子中专门踩到@ driver.close并且我得到以下错误:

挂钩后发生错误NoMethodError:undefined方法退出'为nil:NilClass     发生在C:/Automated_Testing/Indie/w_molap_1.rb:31:inblock(2级)in'

我的问题是:我能做些什么不同 - 可能在钩子设置之前的驱动程序中允许我同时运行这些文件而不让它们相互踩踏?

1 个答案:

答案 0 :(得分:0)

我认为你需要研究的是使用Ruby Gem来parallel_test。此外,您应该从Test :: Unit :: TestCase扩展您的测试类,以便您可以利用定义setup / teardown方法。此外,每个测试方法应分为每个测试类的单独测试类,以便parallel_test可以在一个单独的线程中运行每个测试类。

另外,我会在开始时保持简单,不要使用RSpec(作为BDD框架),直到找到基本的多线程。