2012-04-19 18 views
6

私はCucumberとRubyを初めて使用しています。私はビジネスアナリストであり、要件とテストケースを作成するのに慣れていましたが、私はCucumberとWatirを読んでいましたが、実際に働くためには何が必要かを知りません。キュウリのプロファイルとグローバルフックを使用してブラウザを選択

私は、IE、Firefox、Chromeでさまざまな種類のユーザーとして、一連のWebページをテストします。私は作っていると機能をタグ付け、cucumber.ymlでプロファイルを作るので、さまざまなユーザーの種類の適切なタグ付きテストを実行するために-pとキュウリを実行することができます。

基本ユーザ、レポートユーザ、エディタユーザなどに簡単にログインできるように、別のページオブジェクトを作成しています。フィーチャファイルには、シナリオや利用者の種類ごとに合否の条件が若干異なります。 step defsは、それらのユーザタイプとしてログインするための適切なページオブジェクトを呼び出します。

wirir-webdriverで適切なブラウザを開くために3回ずつテストを複製するのではなく、ブラウザを開いて各シナリオで閉じるのではなく、env.rbまたはhooks.rbにグローバルフックを作りたかったすべての機能が実行される前に一度だけブラウザーを開き、機能がすべて実行されたときにグローバルフックから前後のステートメントを閉じます。ここでも、タグ付きのシナリオを呼び出すプロファイルを使用して、各ユーザータイプに対して実行するテストを選択しています。

私が抱えている問題は、ブラウザを開くだけの前段階です。私は各ブラウザを開くためにwatir-webdriverをどのように利用するのか知っています。私はテストの前に、ブラウザを開くことでグローバルフックを入れたと思った何

。 env.rbで私はブラウザ= Watir :: Browser.new呼び出しを入れようとしていました。

私がしたいことは、IE、Chrome、Firefox用に3つの別々のグローバルフックを用意し、cucumber.yml内のプロファイルから渡された条件に基づいて呼び出すことですが、働く私はそれらにタグを付けることを試みたが、それはうまくいかなかった。グローバルフックにタグを付けることはできませんか?私はif/then/elseの設定で試しましたが、それもうまくいきませんでした。

私のような、一つだけのグローバルフックを呼び出すためにcucumber.ymlにプロファイルからパラメータまたはタグを渡すことができるようにしたいと思います:

basicuser_overviewtests_ie: --tags @basic @overview @ie 

basicuser_overviewtests_ff: --tags @basic @overview @firefox 

Basicuser_newpagetests_ie: --tags @basic @newpage @ie 

等...最初の二つのタグを参照することになりシナリオ、3番目は正しいenv.rbフックです。

それとも、私はプロファイルから変数を渡すことができれば、それはあまりにも動作すると思います。私はそこで環境変数をどのように使うことができるのか理解できませんでした。

何か不足していますか?問題を説明するのに十分な情報ですか? ありがとうございました!


UPDATE:問題の一部は、キュウリ、それが[機能]フォルダと同じレベルにあったとき、それは[機能]の下にあるために必要な[サポート]フォルダを認識していなかったように見えます。私が言ったcukeの情報は、内部の機能ではなく同じレベルでOkだと言っていました。そうではありません。

これで、ブラウザを実行するための3つのグローバルフックを手に入れることができますが、タグ付けは役に立ちません。@ieタグ付きのフィーチャの前にのみタグ付けされていたり、すなわち、

答えて

8

EDITThe Cucumber Book 147から148が、これは動作するはずと信じて私をリード:

Before ('@ie') do 
    @browser = Watir::Browser.new :ie 
end 

私はそれをテストしていませんが、それはおそらくあなたがタグとしてブラウザを渡したい場合は、あなたが望むあなたは何になるだろう。


タグを読み取る方法もわかりませんでしたが、おそらくそれを行う方法があると思います。私がThe Cucumber Bookにそれを見つけたら、あなたに更新します。私は環境変数を使用して終了しました。ここでは、私はそれをやった方法は次のとおりです。

case ENV['BROWSER'] 
    when 'ie', 'Internet Explorer' 
    browser = Watir::Browser.new :ie 
    when 'ff', 'Firefox' 
    browser = Watir::Browser.new :ff 
    when 'chrome' 
    browser = Watir::Browser.new :chrome 
    when 'opera' 
    browser = Watir::Browser.new :opera 
    when 'debug' 
    debug_profile = Selenium::WebDriver::Firefox::Profile.new 
    debug_profile.add_extension 'features/support/firebug.xpi' 
    browser = Watir::Browser.new :firefox, :profile => debug_profile 
    else 
    browser = Watir::Browser.new :ie 
end 

Before do 
    @browser = browser 
end 

at_exit() do 
    browser.close 
end 

その後、私はちょうど、コマンドラインでBROWSER=<browser>に渡します。 ENV変数を使用するための詳細については、hereというブログ記事を参照してください。

+0

ありがとうございました!正しい軌道に乗っているように見えます。私は環境変数を使って作業しようとしていましたが、正しい構文がなかったので、タグ付けに移りました。これは私が必要としている通りに機能し、あなたのブログの投稿は多大な助けとなりました。ありがとうございました! –

+0

素晴らしい!お役に立てて嬉しいです。あなたがまだいなければ、キュウリの本を拾いなさい。それは私にとってはとても役に立ちました。 –

関連する問題