2015-05-26 1 views
1

Мне нужно запустить несколько rb-файлов одновременно. Каждый файл настройка одинаково (упрощенный пример ниже)Как запустить несколько рубиновых файлов одновременно, если они не наступают друг на друга?

File # 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: не определен метод выхода»для ноль: NilClass произошло в C:/Automated_Testing/Indie/w_molap_1.rb: 31: inblock (2 уровня) в '

Мой вопрос: есть ли что-то другое, что я мог бы сделать - возможно, в драйвере до настройки крючка, который позволит мне запускать эти файлы одновременно, если они не наступают друг на друга?

+0

Как вы запускаете их одновременно? Способ выполнения может повлиять на ваши варианты. – Jesper

+0

@Jesper - я делаю это одним из двух способов - каждый набор из десяти тестов - это собственный .rb-файл, я могу буквально просто выделить их все и нажать «войти», и все они начнутся. Или мой предпочтительный способ заключается в том, что я использую пакетный файл для одновременного вызова каждого из rb-файлов - он ждет их всех, чтобы закончить их, отправляет мне электронное сообщение о выходе консоли. – Jen

ответ

0

Я думаю, что вам нужно изучить, используя Ruby Gem для parallel_test. Кроме того, вы должны расширить свой тестовый класс из Test :: Unit :: TestCase, чтобы вы могли использовать определение методов настройки/удаления. Кроме того, каждый метод тестирования должен быть разделен на отдельный тестовый класс для каждого из них, так что parallel_test может запускать каждый из них в отдельном потоке.

Кроме того, я бы упростил это в начале и не использовал RSpec (как основу BDD) до тех пор, пока не получим базовую многопоточность.

Смежные вопросы