Невозможно использовать OptionParser и rspec - PullRequest
1 голос
/ 16 августа 2011

У меня есть простой скрипт watir (веб-драйвер), который идет в Google. Но я хочу использовать опцию парсера, чтобы установить аргумент в cmd для выбора браузера. Ниже мой сценарий:

require 'optparse'
require 'commandline/optionparser'
include CommandLine
require 'watir-webdriver'

describe 'Test google website' do

  before :all do

    options = {}

    opts = OptionParser.new do |opts|

      opts.on("--browser N",
        "Browser to execute test scripts") do |n|
        options[:browser] = n
        $b = n.to_s
      end
    end

    opts.parse! ARGV

    p options
  end

  describe 'The test website should be displayed' do

    it 'should go to google' do
      $ie = Watir::Browser.new($b)
      #go to test website
  $ie.goto("www.google.com")
    end
  end
end

Выполнение rspec ietest.rb --browser firefox -f doc просто дает мне недопустимую опцию, т.е.test - это имя моего файла. Любые другие интуитивно понятные способы настройки браузера через веб-драйвер без изменения кода скрипта приветствуются.

Ответы [ 2 ]

7 голосов
/ 16 августа 2011

Вы не можете использовать rspec с OptionParser, так как сам исполняемый файл rspec анализирует свои собственные параметры. Вы не можете "прокрутить" ваши опции в опциях rspec.

Если вы должны сделать что-то подобное, используйте файл настроек (spec_config.yml или аналогичный) или переменную окружения:

BROWSER=firefox spec test_something.rb

А затем в своем коде вы можете использовать ENV['BROWSER'] для получения настройки.

0 голосов
/ 16 августа 2011

Пожалуйста, узнайте о RSpec, потому что, я полагаю, вы понятия не имеете об этом (просто Google). Там нет никаких ожиданий, и вы пишете свои функции в нем.

require 'optparse'
require 'commandline/optionparser'
include CommandLine
require 'watir-webdriver'

options = {}

opts = OptionParser.new do |opts|

opts.on("--browser N",
  "Browser to execute test scripts") do |n|
  options[:browser] = n
end

opts.parse! ARGV

p options

ie = Watir::Browser.new(options[:browser].to_s)
#go to test website
ie.goto("www.google.com")

Это должно сработать.

РЕДАКТИРОВАТЬ: Если вы хотите проверить это, сделайте что-то вроде этого:

def open_url_with_browser(url, browser = 'firefox')
  nav = Watir::Browser.new(browser)
  nav.goto(url)
end

Тогда вы протестируете этот метод в спецификации. Просто заглушка new и goto в разных спецификациях.

Если вы все еще задаетесь вопросом, почему вы получаете недопустимую опцию, потому что вы передаете --browser в rspec, а не в свой сценарий, как предполагалось.

...