Cucumber-tags

提供:Dev Guides
移動先:案内検索

キュウリ-タグ

機能ファイルに1つ、2つ、または5つのシナリオがある場合は、単純に見えます。 しかし、実際にはそれは起こりません。 テスト対象の機能ごとに、1つの機能ファイルに10、20、またはより多くのシナリオがある場合があります。 それらは、異なる目的(煙テスト/回帰テスト)、異なる見込み(開発者/QA/BA)、異なるステータス(実行準備完了/進行中の作業)などを表します。 そのような集団の実行を管理する方法は?

このため、Cucumberは機能ファイルでタグを使用してシナリオの実行を整理する方法をすでに提供しています。 便利なタグを使用して各シナリオを定義できます。 後でランナーファイルで、Cucumberに実行させる特定のタグ(およびシナリオ)を決定できます。 タグは「@」で始まります。 「@」の後に、タグを定義する関連テキストを含めることができます。 例でこれを理解しましょう。

機能ファイルに2つ以上のシナリオがあるとします。 煙テストの一部として1つのシナリオのみを実行します。 そのため、最初にそのシナリオを特定し、2番目にシナリオの先頭に「@SmokeTest」テキストでタグ付けします。 それを深く見てみましょう-

ステップ1 *- *cucumberTag という名前のMavenプロジェクトを作成します。

ステップ2- src/test/java の下に cucumberTag という名前のパッケージを作成します

ステップ3- cucumberTag.feature という名前の機能ファイルを作成します。

ファイル内に次のテキストを記述して保存します。 この機能ファイルには、 SmokeTest タグとしてマークされているシナリオが1つだけある2つのシナリオが含まれています。

機能-キュウリのタグ

シナリオの概要-ソーシャルネットワーキングサイトのログイン機能。

特定のユーザーがFacebookに移動する

「<ユーザー名>」としてユーザー名を入力し、「<パスワード>」としてパスワードを入力すると

その後、ログインは失敗するはずです

| username  | password  |
| username1 | password1 |
| username2 | password2 |
  1. followingシナリオはSmokeTestとしてタグ付けされており、これが実行されるはずです。 @smokeTest

シナリオ:

特定のユーザーがFacebookに移動する

ユーザー名を「<>」、パスワードを「<>」と入力すると

次に、ユーザーをログイン再試行にリダイレクトする必要があります

  • ステップ4 *-ステップ定義ファイルを作成します。
  • パッケージのアウトラインを選択して右クリックします。
  • 「新規」ファイルをクリックします。
  • ファイルに cucumberTag.java などの名前を付けます
  • ファイル内に次のテキストを記述して保存します。
package cucumberTag;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;

public class cucumberTag {
   WebDriver driver = null;

   @Given("^user navigates to facebook$")
   public void goToFacebook() {
      driver = new FirefoxDriver();
      driver.navigate().to("https://www.facebook.com/");
   }

   @When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$")
   public void I_enter_Username_as_and_Password_as(String arg1, String arg2) {
      driver.findElement(By.id("email")).sendKeys(arg1);
      driver.findElement(By.id("pass")).sendKeys(arg2);
      driver.findElement(By.id("u_0_v")).click();
   }

   @Then("^login should be unsuccessful$")
   public void validateRelogin() {
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
            System.out.println("Test Pass");
      } else {
         System.out.println("Test Failed");
      }
      driver.close();
   }

   @Then("^User should be redirected to login retry$")
   public void loginRetry() {
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
            System.out.println("Test Pass");
      } else {
         System.out.println("Test Failed");
      }
      driver.close();
   }
}
  • ステップ5 *-ランナークラスファイルを作成します。
  • パッケージ内に runTest.java という名前のランナークラスを作成します。
  • 次のコードを書きます。
  • ファイルを保存してください。
package cucumberTag;

import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;

@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})

public class runTest { }
  • テストオプションを実行します。
  • 右クリックして、オプション「実行」*を選択します。
  • JUnitテストを選択します。

このクラスファイルを実行すると、次のことを確認できます。

  • Facebookが新しいFirefox Webブラウザーインスタンスで開きます。
  • ユーザー名とパスワードのフィールドに値は提供されません。
  • ログインをクリックします。
  • ログイン再試行ページがロードされます。

機能ファイル内のタグの定義に制限はありません。 必要に応じて、使用するタグと実行するシナリオを導出できます。

タグには主に2つのタイプがあります-

  • デフォルトタグ-デフォルトタグには定義済みの意味があります。 例@ Dev、@ Ignore
  • カスタムタグ-カスタムタグは、タグを定義するための適切なテキストを選択するための完全な柔軟性を提供します。

タグは機能レベルでも定義できます。 機能レベルでタグを定義すると、その機能ファイル内のすべてのシナリオがそのタグを継承することが保証されます。 シナリオの性質に応じて、単一の機能に複数のタグを使用できます。 Cucumberが適切な呼び出しを見つけるたびに、特定のシナリオが実行されます。

Cucumberは、タグの選択を逆にする方法も提供します。 25の定義されたシナリオのうち、10が煙テストとしてマークされていることを考慮してください。 回帰テストシナリオのみを実行する必要があります。

このために、JUnitランナークラスで「〜」を使用して、煙テストシナリオを除外できます。 次のようになります。

@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}, tags = {"~@SmokeTest"})

public class runTest { }

複数のタグを定義しながら、論理的および/または論理的および操作を定義することもできます。

  • 論理クラスまたはランナークラスでの定義- @ dev、@ wip -このタグのいずれかに一致するシナリオを実行する必要があると述べています。
  • 論理クラスまたはランナークラスでの定義-* [@ dev、〜@ wip]-*これらのタグの両方に一致するシナリオを実行する必要があると述べています。