Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何同时运行多个ruby文件而不让它们相互碰撞?_Ruby_Rspec - Fatal编程技术网

我如何同时运行多个ruby文件而不让它们相互碰撞?

我如何同时运行多个ruby文件而不让它们相互碰撞?,ruby,rspec,Ruby,Rspec,我需要同时运行几个rb文件。每个文件的设置相同(下面的简化示例) 文件#1(共有6个测试,每个测试约10个) 所有文件单独运行都很好-但是当同时运行时,它们最终会在after hook期间相互碰撞,特别是@driver.close,我得到以下错误: nil:NilClass的after hook NoMethodError:undefined方法quit'中发生错误 发生在C:/Automated_Testing/Indie/w_molap_1。rb:31:in' 我的问题是:我能做些什么不同的

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

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

所有文件单独运行都很好-但是当同时运行时,它们最终会在after hook期间相互碰撞,特别是@driver.close,我得到以下错误:

nil:NilClass的after hook NoMethodError:undefined方法quit'中发生错误 发生在C:/Automated_Testing/Indie/w_molap_1。rb:31:in'


我的问题是:我能做些什么不同的事情吗?也许在挂钩前的驱动程序设置中,我可以同时运行这些文件,而不会让它们相互碰撞?

我想你需要研究的是使用Ruby Gem进行
并行测试。此外,您应该从test::Unit::TestCase扩展您的测试类,以便能够利用定义setup/teardown方法的优势。此外,每个测试方法都应该被分成单独的测试类,以便并行_测试可以在单独的线程中运行


另外,我会在一开始就保持简单,在您了解基本的多线程之前,不要使用RSpec(作为BDD框架)。

如何同时运行它们?执行的方法可能会影响您的选项。@Jesper-我有两种方法可以选择一种-每组10个测试都是它自己的.rb文件,我可以直接突出显示它们,然后点击“回车”,它们就开始运行了。或者我更喜欢的方式是,我使用一个批处理文件来同时调用每个rb文件——它等待它们全部完成,并通过电子邮件向我发送控制台输出日志。
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