1

私はRubyとSeleniumの両方にかなり慣れていないので、テストハーネスを構築するための最良の方法を見つけようとしています. 私は Rake、Rake::TestTask、および Test::Unit を使用してこれを強化しています。ブラウザーと OS の組み合わせごとに 1 回実行したいスイートがあります。ただし、テストをパラメーター化する方法がわかりません。これは、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 }

スイートまたはケースのセットアップで BROWSER= を読み取れるようにしたいと思っています。何か提案がありますか、それとも Ruby でこれを行うより良い方法はありますか?

4

2 に答える 2

1

ソースを何度も調べた後、あまり文書化されていない機能を見つけました。Test :: Unitテストランナーは、コマンドラインでテストケースを実行する以外に何もしません。オートランナーに依存して、そのクラス固有のクラスのケースケースを実行します。したがって、-の後に何かがオプションとして渡されると言うとき、それらはコマンドラインオプションを意味し、変数やパラメータを意味しません。

だから...追加

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

実際にそれらをARGVに渡し、手動で処理する必要があります。それらの引数を取得し、それらをファクトリクラスにスローして、適切なSeleniumインスタンスを取得するとうまくいきます。

于 2009-04-18T02:41:08.973 に答える
0

これはあなたが求めているものではないかもしれません。しかし、Python でまったく同じ問題を解決し、 テストのパラメーター化でそれについてブログを書きました。Ruby で同じアプローチを使用できると確信していますが、それがあなたが行ったこととどのように比較されるかはわかりません。他の人がこの問題をどのように解決したかを知りたいのですが、ドキュメントはあまり見つかりません。

于 2009-04-18T03:02:00.717 に答える