Тестирование на основе данных с тестом Руби :: Устройство для селена - PullRequest
1 голос
/ 18 апреля 2009

Я довольно новичок как в Ruby, так и в Selenium, и я просто пытаюсь найти наилучший способ создания моей тестовой оснастки. Я использую Rake, Rake :: TestTask и Test :: Unit для питания этого. У меня есть набор, который я хотел бы запустить один раз для каждой комбинации браузера / операционной системы. Я не могу понять, как параметризовать свои тесты, к чему я привык с Junit4 и TestNG.

require 'rake'
require 'rake/testtask'

browsers = ['IE on Windows', 'Firefox on Windows', 'Firefox on Mac', 'Safari on Mac']

task :default => [:run_tasks]

task :create_tasks do
  browsers.each do |browser|    
    Rake::TestTask.new("selenium_units:#{browser}") do |t|
      t.libs << "lib"
      t.pattern = 'test/*_test.rb'
      t.verbose = true
      t.warning = true
      t.opts = "BROWSER=\"#{browser}\""
    end
  end  
end

task :run_tasks => [:create_tasks]
task :run_tasks => browsers.map { |e| "selenium_units:"+ e }

Мне бы очень хотелось, чтобы я мог прочитать этот БРАУЗЕР = в настройках моих люксов или чемоданов. Любые предложения или есть лучший способ сделать это в Ruby?

Ответы [ 2 ]

1 голос
/ 18 апреля 2009

После долгих поисков в источнике я обнаружил не очень документированную функцию. Test :: Unit test runner ничего не делает, кроме выполнения ваших тестовых случаев в командной строке, полагаясь на автозапуск для запуска любых случаев конкретного класса. Поэтому, когда они говорят что-либо после - будут переданы как параметры, они означают параметры командной строки, а не некоторую переменную или параметр.

так ... добавление

t.options = '-- -foo -bar=baz'

Фактически передаст их в ваш ARGV, и вы должны обрабатывать их вручную. Взяв эти аргументы и бросив их в фабричный класс, чтобы взять соответствующий экземпляр Selenium, я буду работать.

0 голосов
/ 18 апреля 2009

Это может быть не то, что вы просите. Но я решил ту же проблему в Python и написал об этом в Параметризация ваших тестов . Я уверен, что вы можете использовать тот же подход в Ruby, но не уверен, как он сравнивается с тем, что вы сделали. Мне интересно знать, как другие решили эту проблему, и не нашли много документации.

...