0

機能的に類似した Web サイトのセットがあり、開発とセレン ブラウザー テストの両方を推進するためにキュウリの仕様を書きたいと考えています。このサイトは言語が異なり、URL も異なりますが、機能はほぼ同じです。

シナリオの例は次のとおりです。

Scenario Outline: Photo Gallery Next Action
  Given I visit a "<photo-gallery-page>"
  When I click "<next-button>" in the gallery
  Then the photo should advance
    Examples:
      | photo-gallery-page | next-button |
      | www.site1.com/photo-gallery | Next |
      | www.site2.com/la-galerie-de-photos | Suivant |

少数のシナリオと例がある場合、これは問題ありません。ただし、何百ものシナリオと、新しいサイトのかなり定期的な立ち上げを期待しています。新しいサイトを立ち上げるときに、各シナリオを編集して例を追加する必要は避けたいと考えています。

すべてのサイトに対して同じシナリオを実行できるように、すべてのサンプル変数をサイトごとの構成に保存する必要があると思います。その後、新しい構成をかなり簡単に追加でき、すべてのシナリオ例を編集して判読不能にすることを回避できます。

site[:en].photo-gallery-page = 'www.site1.com/photo-gallery'
site[:fr].photo-gallery-page = 'www.site2.com/la-galerie-de-photos'
site[:en].next-button = 'Next'
site[:fr].next-button = 'Suivant'

1 つのオプションは、この構成をどこかに保存してから、スクリプトを使用してサイト固有のガーキン ファイルを生成することです。次に、必要な例を含むこれらの生成されたガーキンを実行できます

もっと簡単な方法はないかと考えています。私のもう 1 つのアイデアは、テーブル変換を使用してサンプル ブロックを置き換えることができるかどうかということでした。私は読んだことがありますが、私が知る限り、それがステップ内のインラインテーブルである場合にのみ、テーブルを変換できます (そしてそれをカスタムコードブロックに置き換えることができます)。サンプル ブロックを同じように変換することはできません。

私はそれを正しく理解しましたか?これを達成するための最善の方法に関する他の提案はありますか?

4

1 に答える 1

0

もっと良い方法はないかと思います... これはすべて非常にもろく感じます。

仮に:

Given I follow a link to the gallery "MyGallery"
And the gallery "MyGallery" contains the following photos:
|PhotoID|PhotoName|
|1      |MyPhoto1 |
|2      |MyPhoto2 |
And the photo "MyPhoto1" is displayed
When I view the next photo
Then the next photo "MyPhoto2" should be displayed

ボタン名などの概念を取り除いたことに注意してください。これは、おそらくステップ定義でより適切に定義されている実装の詳細です。定義している動作は、ギャラリーに移動し、画像を表示し、次の画像を要求し、次の画像を表示するだけです。ステップ定義で方法を定義します。

http://cuke4ninja.com/には、このトピックに関して非常に役立つと思われる読み物があります。PDF をダウンロードして、Web 自動化セクションを確認してください (Web 自動化ピラミッドの詳細が記載されています)。

構成の問題に対処するために、何らかの構成を定義できるかもしれません。クラスに追加し、依存性注入を介してステップ定義ファイルに提供します。別の構成からロードすることで、サイト固有にすることができます。コンストラクターで提案したファイル。ステップ定義は、構成から関連するサイト固有のデータを引き出すことができます。クラスのプロパティ。これにより、シナリオが読みやすくなり、脆弱性が軽減されると思います。

于 2012-09-27T13:09:21.977 に答える