【问题标题】:How to run parrellel tests with RSpec and Watir on a Windows machine?如何在 Windows 机器上使用 RSpec 和 Watir 运行并行测试?
【发布时间】:2019-09-28 17:29:48
【问题描述】:

我正在尝试在 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)

【问题讨论】:

    标签: ruby rspec watir


    【解决方案1】:

    使用来自 Rake 任务的 Parallel Test gemParallel Split Test gem。 你可以看一个例子in this sample code

    【讨论】:

    • 嗨,Titus,我使用了并行拆分测试 gem,它正在按顺序运行,并且报告 Process.fork is not supported by this Ruby。我使用Ruby2.6。你有解决这个问题的办法吗?
    • 哦,对了,Windows。 Parallel gem 在 Windows 上不起作用,因为它不支持 Process.fork
    • @Rajagopalan 如果您受到 Windows 的限制,您应该查看 Docker for windows(您需要 Windows Pro)并让您的测试在容器中运行。
    • 但是我在很多机器上都使用了我的框架,所以这不起作用@Gijs Paulides
    • 我无法进入您的完整设置,但如果在所有单独的机器上执行测试很重要,那么理论上,它应该可以运行rspec 在一台机器上并行,让watir 连接到不同的机器并远程启动浏览器。大项目,很多工作,不确定它是否会奏效。但是,如果您不想在所有机器上设置 Docker,那将是解决方案。祝你好运!
    【解决方案2】:

    在此代码中,您没有并行运行规范。您正在并行声明上下文。

    换句话说,调用itspecify 不会执行测试代码。该块正在保存,然后由 rspec runner (somewhere here I believe) 执行。 这就是为什么 RSpec(例如)可以以随机顺序运行所有示例的原因。

    因此,要进行并行执行 - 您需要做的不仅仅是示例代码。请参阅 the other answer 中的项目示例。

    【讨论】:

    • 当你说context并行时,你的意思是说并行描述块,嗯?
    • 是的,基本上你是在并行添加示例块,这些块将在稍后执行 - 不一定是并行的。
    猜你喜欢
    • 2015-03-28
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多