我如何同时运行多个ruby文件而不让它们相互碰撞?
我需要同时运行几个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文件而不让它们相互碰撞?,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' 我的问题是:我能做些什么不同的
我的问题是:我能做些什么不同的事情吗?也许在挂钩前的驱动程序设置中,我可以同时运行这些文件,而不会让它们相互碰撞?我想你需要研究的是使用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