6

私はキュウリとルビーに不慣れです。私は要件とテストケースの作成に慣れているビジネスアナリストであり、CucumberとWatirについて読んだことがありますが、実際に機能するために必要なものを取得するのに問題があります。

IE、Firefox、Chromeで、さまざまなタイプのユーザーとして一連のWebページをテストします。私は機能を記述してタグ付けし、cucumber.ymlでプロファイルを作成しているので、-pを指定してcucumberを実行し、さまざまなユーザータイプに適切なタグ付きテストを実行できます。

Basicユーザー、Reportsユーザー、Editorユーザーなどとして簡単にログインできるように、さまざまなページオブジェクトを作成しています。機能ファイルには、ユーザーのタイプごとにわずかに異なるシナリオと合格/不合格条件があり、stepdefsはそれらのユーザータイプとしてログインするための適切なページオブジェクト。

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

私が抱えている問題は、その前のステップであり、ブラウザを開くだけです。watir-webdriverを使用して各ブラウザを開く方法を知っています。

私が望んでいたのは、テストの前にブラウザを開くためにグローバルフックを挿入することでした。したがって、env.rbに、browser = Watir::Browser.new呼び出しを配置し​​ます。

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

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

basicuser_overviewtests_ie: --tags @basic @overview @ie

basicuser_overviewtests_ff: --tags @basic @overview @firefox

Basicuser_newpagetests_ie: --tags @basic @newpage @ie

など...最初の2つのタグはシナリオを参照し、3番目は正しいenv.rbフックを参照します。

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

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


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

これで、ブラウザーの3つのグローバルフックを実行できるようになりましたが、タグ付けは役に立ちません。@ ieのタグが付けられた機能の前にのみ実行するようにタグ付けされていても、@ ieの実行のみにタグ付けされたプロファイルでタグ付けされていても、すべてが一度に実行されます。

4

1 に答える 1

8

編集:キュウリの本からのpp.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変数を使用するために私が行ったことの詳細については、ここに書いたブログ投稿を参照してください。

于 2012-04-20T19:43:04.063 に答える