何ですか Cucumber 機能ファイルとステップの定義? (例)
⚡ スマートサマリー
Cucumber フィーチャーファイルは、平易な言語のガーキンで動作を記述し、ステップ定義には各行を実行するコードが格納されます。 Cucumber プロジェクトには両方が必要で、フィーチャーディレクトリの下の固定フォルダレイアウトに格納されます。
すべてのCucumberプロジェクトには、プロジェクトのルートディレクトリに「features」という名前のディレクトリが1つあります。ここにすべてのCucumberフィーチャーが格納されます。このディレクトリ内には、step_definitionディレクトリとsupportディレクトリという追加のディレクトリがあります。
そのレイアウトが重要な理由は、 Cucumber 設定ではなく、慣例に基づいてファイルを見つけ出します。features ディレクトリの外にあるフィーチャーファイルは、決して読み込まれません。
「フィーチャーファイル」とは何ですか?
機能ファイルには、次の高レベルの説明が含まれています。 テストシナリオ 簡単に言うと、 ガーキンGherkinは平易な英語のテキスト言語です。
Cucumber フィーチャーファイルは以下のコンポーネントで構成されます。
- 機能: 機能は、実行する必要がある現在のテスト スクリプトを記述します。
- シナリオ: シナリオは、特定のテスト ケースの手順と期待される結果を説明します。
- シナリオ概要: シナリオアウトラインを使用すると、複数のデータに対して同じシナリオを実行できます。 データは (II) で区切られた表構造によって提供されます。
- 与えられた: 実行するテキストのコンテキストを指定します。 データテーブル「Given」を使用することで、ステップをパラメータ化することもできます。
- 「When」は、実行する必要のあるテストアクションを指定します。
- その後テストの期待される結果は「Then」で表すことができます。
1つのファイルには1つの機能が格納されます。その下のシナリオは、その機能を説明する具体的な例であり、各シナリオは同じ構成になっています。つまり、開始状況の説明、イベントの説明、期待される結果の説明です。
次に、フィーチャーファイルの書き方を学びます。 Cucumber 例を挙げて説明します。
サンプル機能ファイルの例:
このチュートリアルに掲載されている元のサンプルコードは、以下に原文のまま再現します。
Feature: Visit career guide page in career.guru99.com Scenario: Visit career.guru99.com Given: I am on career.guru99.com When: I click on career guide menu Then: I should see career guide page
⚠️訂正: 上記の例ではコロンが 与えられた, (NAIST) と その後ガーキンはコロンを 機能 (NAIST) と シナリオ のみ。ステップキーワードの後にコロンが続く場合、ステップとして解析されないため、 Cucumber その行は黙って無視されます。修正後のファイルの内容は以下のとおりです。
Feature: Visit career guide page in career.guru99.com Scenario: Visit career.guru99.com Given I am on career.guru99.com When I click on career guide menu Then I should see career guide page
パーサーはインデントを必須としていませんが、各レベルに2つのスペースを入れるのが一般的なスタイルであり、長いフィーチャーをはるかに読みやすくします。下の動画は、フィーチャーファイルが実行され、各ステップが通過するにつれて緑色に変わっていく様子を示しています。
「ステップ定義」とは何ですか?
ステップ定義は、機能ファイル (Given/When/Then によって導入される) のテスト ケース ステップをコードにマップします。 これは、テスト対象のアプリケーションのステップを実行し、期待される結果と比較して結果をチェックします。 ステップ定義を実行するには、ステップ定義がフィーチャー内の指定されたコンポーネントと一致する必要があります。 ステップ定義は、「features/step_settings/*_steps.rb」の下の Ruby ファイルで定義されます。
マッチングは、ステップのテキストのみに基づいて行われます。 Cucumber 定義を検索する際にキーワードを考慮しないため、同じスイート内の 2 つのステップが、一方が Given で他方が Then であっても、まったく同じテキストを持つことはありません。
ステップ定義の例: ここでは上記を使用します Cucumber career.guru99.com を閲覧する際のフィーチャーファイルの例です。以下に示すように、「When、Then、Given」などの機能を使用します。 Cucumber 機能ファイルの例。
Step 1: Given (/^ I am on career.guru99.com$/) do Browser.goto "http://career.guru99.com" -This will visit career.guru99 on browser end Step 2: When (/^ click on career guide menu$/) do Browser.text (:name, " career guide" ).click – This will click "career guide menu" end Step 3: Then (/^ I should see career guide page$/) do Browser.goto "http://career.guru99.com/category/career-guide/" - It will visit "career guide page" end
⚠️ 言語に関する注意点: 上記の定義はRubyです。 Cucumber 開始したので、フォルダ名は step_definitions ファイルは以下で終わります _steps.rb同じフィーチャーファイルが、 Java, Javaスクリプト、 Python または、Gherkinに一切変更を加えることなくC#で。 Cucumber-JVMでは、正規表現がメソッドのアノテーションに移動します。
@Given("I am on career.guru99.com") public void i_am_on_the_career_page() { driver.get("http://career.guru99.com"); }
どの言語を選択しても、ステップ定義は実装の詳細を記述する唯一の場所です。ping フィーチャーファイルからセレクタとHTTP呼び出しを抜き出すことで、プログラマー以外の人でもシナリオを読めるようになります。 最初の Cucumber スクリプト このチュートリアルでは、このペアリングを最初から最後まで構築していきます。
フィーチャーファイル内のシナリオ概要と例
1つの値を変更するためにシナリオを3回コピーすることは、フィーチャーファイルが読み取れなくなる最も一般的な原因です。 シナリオ概要 コピーをテンプレートに置き換え、 例 表に値が記載されています。
パラメータは山括弧で囲んで記述し、その下の表の列見出しと一致させる必要があります。 Cucumber 一致するステップ定義を探す前に値を置き換えるため、定義自体に特別な処理は必要ありません。
Scenario Outline: Search the career guide Given I am on career.guru99.com When I search for "<keyword>" Then I should see the <section> section Examples: | keyword | section | | interview | Interview Tips| | resume | Resume Guide |
アウトラインを使用する際に覚えておくと良い点がいくつかあります。
- アウトラインはデータ行ごとに1回実行されます。最初の行はヘッダーであり、実行されることはありません。
- シナリオ概要の後には、少なくとも1つの例セクションが続く必要があります。そうでない場合、何も実行されません。
- テーブル内のパイプは必ずしも一直線に並ぶ必要はありませんが、一直線に並ぶことでファイルの読み取りやすさが向上します。
- テーブルは小さく保ちましょう。30行のテーブルは通常、データが データ駆動型テスト を代わりにお使いください。
背景、そして、しかし、その他のガーキンのキーワード
先に挙げた6つの構成要素以外にも、Gherkinには、より長いフィーチャーファイルを読みやすくするためのキーワードがいくつかあります。
- 経歴 — フィーチャー内のすべてのシナリオの前に実行される、Givenステップのブロック。これにより、各シナリオの先頭に同じ前提条件を記述する手間が省けます。
- (NAIST) と だけど — 繰り返し出現する Given、When、Then の代替。読みやすく、動作も同じです。 Cucumber どちらの場合も、手順テキストに一致します。
- ルール — オプショングループpingGherkin 6で追加された、1つのビジネスルールを説明するシナリオを収集する機能。
- ドキュメント文字列 — 3つの二重引用符で囲まれたテキストブロック。1行では不十分な場合に、単一の引数としてステップ定義に渡されます。
- データテーブル — パイプ区切りの行で、単一のステップに添付され、そのステップに値のリストを渡すために使用されます。
- タグ — フィーチャーまたはシナリオの上に配置され、実行時にサブセットを選択できるようにするための、アットマークで始まるラベル。
- コメント — ハッシュ記号で始まる行。コメントは行頭にのみ記述可能で、Gherkinにはブロックコメントはありません。
まとめると、共有設定を含むフィーチャーファイルは次のようになります。
Feature: Career guide navigation Background: Given I am on career.guru99.com Scenario: Open the career guide menu Given I am signed in And my profile is complete When I click on career guide menu Then I should see career guide page But I should not see the admin panel
フィーチャーファイルでよくある間違いとその修正方法
ブリッジ Cucumber 初心者から報告される問題は、フレームワークの欠陥ではありません。それらは、Gherkinのルールに違反する小さな問題であり、静かに発生するものです。
| 間違い | 何が起こるのですか | 修正する |
|---|---|---|
| Given、When、またはThenの後のコロン | この行はステップとして認識されず、スキップされます。 | FeatureとScenarioの後にのみコロンを使用してください。 |
| 同じテキストの2つのステップ | Cucumber キーワードが無視されるため、重複として扱われます | 1つのステップを書き換えて、2つの文章が異なって見えるようにする |
| features ディレクトリ外にあるフィーチャーファイル | ファイルは発見されず、テストも実行されません。 | すべての .feature 機能フォルダ内のファイル |
| 1つのシナリオで15ステップ | シナリオはドキュメントに従って動作しなくなります | 3~5ステップを目指し、各ステップの定義に詳細を盛り込む。 |
| 次にデータベース行に対してアサートする | ユーザーから見える動作が壊れているにもかかわらず、テストは合格する。 | ページやレスポンスなどの観測可能な出力に対してアサートする |
| 例のないシナリオ概要表 | テンプレートは実行されません | アウトラインのすぐ下に「例」セクションを追加する |
スイートが大きくなる前にこれらを修正する方が、後で修正するよりもはるかに安価です。なぜなら、その間に書かれたすべてのシナリオは同じ形状をコピーするからです。フィーチャー ファイルが正しく動作したら、次のステップはプロジェクトを接続することです。 Cucumber インストール ウォークスルーとより広い 自動化テスト シリーズ。

