Тестирование на основе данных с помощью Ruby's Test :: Unit for Selenium

Я новичок как в 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?


person Trey    schedule 18.04.2009    source источник


Ответы (2)


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

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

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

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

person Trey    schedule 18.04.2009
comment
stackoverflow.com/questions/28110384 / - person djangofan; 13.06.2015
comment
stackoverflow.com/questions/825748/ - person djangofan; 13.06.2015

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

person airportyh    schedule 18.04.2009
comment
Спасибо за ссылку. Та же самая проблема и, как и следовало ожидать, аналогичное решение. Я действительно подумывал о написании своего собственного средства запуска тестов, аналогичного вашему, но хотел сделать все как можно ближе к рубиновому способу, несмотря на относительно незрелую библиотеку тестирования. Хорошее описание. - person Trey; 20.04.2009