我正在尝试在Rspec中运行此watir代码,并且还在尝试并行运行测试用例。但是它一个接一个地运行。无论如何,我可以实现并行运行吗?
require 'rspec'
require 'watir'
a=[]
2.times do
a<<Thread.new do
describe 'My behaviour' do
it 'should do something' do
b = Watir::Browser.new
b.goto 'www.google.com'
b.text_field(name: 'q').set 'Rajagopalan'
b.close
end
end
end
end
a.each(&:join)
但是,如果我在没有Rspec的情况下运行相同的代码,则它将并行运行。例如,请考虑以下代码
require 'rspec'
require 'watir'
a = []
2.times do
a << Thread.new do
b = Watir::Browser.new
b.goto 'www.google.com'
b.text_field(name: 'q').set 'Rajagopalan'
b.close
end
end
a.each(&:join)
答案 0 :(得分:1)
在此代码中,您没有并行运行规范。您正在并行声明上下文。
换句话说,调用it
或specify
不会执行测试代码。该块将被保存,然后由rspec运行程序(somewhere here I believe)执行。
这就是为什么RSpec(例如)可以以随机顺序运行所有示例的原因。
因此,要进行并行执行,您需要做的不仅仅是示例代码。请参见在the other answer中可以执行此操作的项目示例。
答案 1 :(得分:0)
使用Rake Task中的Parallel Test gem或Parallel Split Test gem。 您可以看到一个示例in this sample code。