我需要同时运行几个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'
我的问题是:我能做些什么不同 - 可能在钩子设置之前的驱动程序中允许我同时运行这些文件而不让它们相互踩踏?
答案 0 :(得分:0)
我认为你需要研究的是使用Ruby Gem来parallel_test
。此外,您应该从Test :: Unit :: TestCase扩展您的测试类,以便您可以利用定义setup / teardown方法。此外,每个测试方法应分为每个测试类的单独测试类,以便parallel_test可以在一个单独的线程中运行每个测试类。
另外,我会在开始时保持简单,不要使用RSpec(作为BDD框架),直到找到基本的多线程。