Не удалось передать ARGV через Test Unit (ruby)

Я запускаю тесты автоматизации с помощью watir-webdriver. Я не могу передать аргументы командной строки ARGV через тестовый модуль, я получаю ArgumentError.

require 'rubygems'
require 'watir-webdriver'
require 'test/unit'    
ARGV.each do |arg|
        if arg.downcase.include? 'chrome'
            $browser = 'chrome'
        elsif arg.downcase.include? 'firefox'
            $browser = 'firefox'
        elsif arg.downcase.include? 'ff'
            $browser = 'firefox'
        elsif arg.downcase.include? 'ie'
            $browser = 'ie'
        end
    end

class TEST_SITE < Test::Unit::TestCase
   def setup
     if $browser == 'chrome'
        $b = Watir::Browser.new :chrome
     elsif $browser == 'firefox'
        $b = Watir::Browser.new :ff
     elsif $browser == 'ie'
        $b = Watir::Browser.new :ie
     end
  end
end

Есть ли другой вариант или как-то переопределить класс тестового модуля?


person Michael Le    schedule 10.07.2012    source источник
comment
Ваш код сработал для меня. Я назвал это, используя «ruby filename.rb ff» и т. д.   -  person Justin Ko    schedule 10.07.2012
comment
Я вызываю его через командную строку «ruby filename.rb chrome». @JustinKo, вы тоже включили необходимые файлы?   -  person Michael Le    schedule 11.07.2012
comment
Я скопировал точный код, который у вас есть выше, в файл, а затем запустил его из командной строки. Можете ли вы добавить полное исключение, которое вы видите?   -  person Justin Ko    schedule 11.07.2012
comment
Я получаю следующую ошибку: C:/Ruby193/lib/ruby/1.9.1/test/unit.rb:167:in `block in non_options': файл не найден: ff (ArgumentError)   -  person Michael Le    schedule 11.07.2012
comment
Ах. Извините, я использую Ruby 1.8.7, в котором нет этой проблемы. Теперь я вижу вашу проблему, когда использую Ruby 1.9.3.   -  person Justin Ko    schedule 11.07.2012


Ответы (1)


Test/Unit, кажется, имеет логику в отношении того, как он обрабатывает значения в ARGV, хотя не совсем уверен, какие значения он проверяет. Однако, если вы сделаете свои аргументы более похожими на параметры, они будут проигнорированы Test/Unit, и ваши тесты должны выполняться.

Попробуйте запустить из командной строки следующее (вам не нужно менять код):

ruby filename.rb -browser=ff
person Justin Ko    schedule 10.07.2012