きゅうり-タグ

機能ファイルにシナリオが1つ、2つ、または5つしかない場合は、単純に見えます。しかし、実際にはそれは起こりません。テスト対象の機能ごとに、10、20、またはそれ以上の数のシナリオが1つの機能ファイルに含まれる場合があります。それらは、さまざまな目的(スモークテスト/回帰テスト)、さまざまな見込み客(開発者/ QA / BA)、さまざまなステータス(実行の準備ができている/進行中の作業)などを表す場合があります。

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

機能ファイルに2つ以上のシナリオがあるとします。スモークテストの一部として、1つのシナリオのみを実行したいと思います。したがって、最初にそのシナリオを特定し、次にシナリオの開始時に「@SmokeTest」テキストでタグ付けすることです。それを深く見てみましょう-

Step 1 −という名前のMavenプロジェクトを作成します cucumberTag

Step 2−という名前のパッケージを作成します cucumberTagsrc/test/java

Step 3−という名前の機能ファイルを作成します cucumberTag.feature

ファイル内に次のテキストを書き込んで保存します。この機能ファイルには、1つだけがマークされている2つのシナリオが含まれていますSmokeTest 鬼ごっこ。

Feature −きゅうりタグ

Scenario Outline −ソーシャルネットワーキングサイトのログイン機能。

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

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

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

| username  | password  | 
| username1 | password1 | 
| username2 | password2 |

#followingシナリオはSmokeTestとしてタグ付けされており、これが実行されるはずです。@SmokeTest

Scenario:

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

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

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

Step 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(); 
   } 
}

Step 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 { }
  • テストオプションを実行します。

  • 右クリックしてオプションを選択します ‘Run as’

  • JUnitテストを選択します。

このクラスファイルを実行すると、次のことがわかります。

  • Facebookは新しいFirefoxWebブラウザインスタンスで開きます。

  • ユーザー名とパスワードのフィールドには値は提供されません。

  • ログインをクリックします。

  • ログイン再試行ページが読み込まれます。

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

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

  • Default tag−デフォルトのタグには事前定義された意味があります。例@ Dev、@ Ignore

  • Custom tag −カスタムタグは、タグを定義するための適切なテキストを選択するための完全な柔軟性を提供します。

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

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

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

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

public class runTest { }

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

  • 論理クラスまたはランナークラスの定義- @dev,@wip −このタグのいずれかに一致するシナリオを実行する必要があることを示しています。

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