Cucumber-scenario-outline
キュウリ-シナリオの概要
- シナリオの概要*は、基本的に変数/キーワードをテーブルの値に置き換えます。 表の各行はシナリオと見なされます。
Facebookログイン機能の同じ例を続けましょう。 これまで、1つのシナリオを実行してきました。正しいユーザー名を提供すると、ログインが成功します。 ここで、ユーザー名、電子メールアドレス、または電話番号である3種類の入力すべてに対してログインが成功したかどうかを確認するとします。 これを達成するには、3つの異なるシナリオを作成する必要があります。各シナリオは入力のタイプによって異なり、ログインは成功します。 この場合、シナリオは次のようになります。
シナリオ:
特定のユーザーがFacebookに移動する
正しいユーザー名とパスワードを入力すると
その後、ログインが成功するはずです
シナリオ:
特定のユーザーがFacebookに移動する
正しいメールアドレスとパスワードを入力すると
その後、ログインが成功するはずです
シナリオ:
特定のユーザーがFacebookに移動する
正しい電話番号とパスワードを入力すると
その後、ログインが成功するはずです
ここで、上記の3つのシナリオについてよく見ると、ステートメントは同じであり、入力パラメーター(ユーザー名/メールアドレス/電話番号)のみが変更されています。 ここで、シナリオの概要の重要性が明らかになります。
シナリオの概要を使用してシナリオを定義する場合、1つのテストシナリオを指定し、その下部にいくつかの入力を提供できます。 シナリオは、提供された入力の数だけ実行されます。
例
シナリオの概要の例を作成しましょう-
ステップ1 *- *ScenarioOutlineTest という名前のMavenテストプロジェクトを作成する
- ファイル→新規→その他→Maven→Mavenプロジェクト→次へに移動します。
- グループIDを指定します(グループIDは、すべてのプロジェクトでプロジェクトを一意に識別します)。
- アーティファクトIDを提供します(アーティファクトIDは、バージョンのないjarの名前です。 小文字の任意の名前を選択できます)。
- 完了をクリックします。
- pom.xml を開きます−
- Eclipseの左側にあるパッケージエクスプローラーに移動します。
- プロジェクトCucumberTestを展開します。
- pom.xmlファイルを見つけます。
- 右クリックして、「テキストエディター」で開くオプションを選択します。
- Seleniumの依存関係の追加-これは、Mavenを示します。どのSelenium jarファイルが中央リポジトリからローカルリポジトリにダウンロードされるかを示します。
- pom.xmlを開いて編集モードにし、プロジェクトタグ内に依存関係タグ(<dependencies> </dependencies>)を作成します。
- 依存関係タグ内に、依存関係タグ(<dependency> </dependency>)を作成します。
- 依存関係タグ内に次の情報を提供します。
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.47.1</version>
</dependency>
- Cucumber-Javaの依存関係を追加:これは、中央リポジトリからローカルリポジトリにダウンロードされるCucumberファイルのMavenを示します。
- もう1つの依存関係タグを作成します。
- 依存関係タグ内で次の情報を提供します。
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
- Cucumber-JUnitの依存関係を追加:これはMavenを示し、どのCucumber JUnitファイルが中央リポジトリからローカルリポジトリにダウンロードされるかを示します。
- もう1つの依存関係タグを作成します。
- 依存関係タグ内に次の情報を提供します。
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
- JUnitの依存関係を追加-これはMavenを示します。どのJUnitファイルが中央リポジトリからローカルリポジトリにダウンロードされるかを示します。
- もう1つの依存関係タグを作成します。
- 依存関係タグ内に次の情報を提供します。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
- JUnitの依存関係を追加-これはMavenを示します。どのJUnitファイルが中央リポジトリからローカルリポジトリにダウンロードされるかを示します。
- もう1つの依存関係タグを作成します。
- 依存関係タグ内に次の情報を提供します。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
- バイナリを検証します。
- pom.xmlが正常に編集されたら、保存します。
- [プロジェクト]→[クリーン]に移動します-数分かかります。
ステップ2 *- *src/test/java の下に「outline」という名前のパッケージを作成する
ステップ3 *-“ outline.feature” *という名前の機能ファイルを作成します
- パッケージのアウトラインを選択して右クリックします。
- 「新規」ファイルをクリックします。
- “ outline.feature” *などのファイル名を付けます *ファイル内に次のテキストを記述して保存します。 * 機能*-シナリオの概要 *シナリオの概要-ソーシャルネットワーキングサイトのログイン機能。 +ユーザーがFacebookに移動する+ユーザー名を「<username>」として入力し、パスワードを「<password>」として入力した場合+ログインに失敗する
例-
| username | password |
| username1 | password1 |
| username2 | password2 |
注意-ここで、注釈の例は、シナリオの実行時に提供される入力の範囲を示しています。 テストシナリオは、提供された各入力に対して実行されます。 したがって、この例では、テストシナリオが3回実行されます。
- ステップ4 *-ステップ定義ファイルを作成します。
- パッケージのアウトラインを選択して右クリックします。
- 「新規」ファイルをクリックします。
- ファイル名を stepdefinition.java として指定します
- ファイル内に次のテキストを記述して保存します。
package Outline;
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 stepdefinition {
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();
}
}
注-上記のコードでは、2つの入力引数を持つ関数を定義する必要があります。1つはユーザー名で、もう1つはパスワード用です。 したがって、タグ例で提供される入力の各セットに対して、GIVEN、WHEN、およびTHENのセットが実行されます。
- ステップ5 *-ランナークラスファイルを作成します。
- パッケージのアウトラインを選択して右クリックします。
- 「新規」ファイルをクリックします。
- runTest.java などのファイル名を付けます
- ファイル内に次のテキストを記述して保存します。
package Outline;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
public class runTest { }
- オプションを使用してテストを実行します-
- パッケージエクスプローラーから runTest.java ファイルを選択します。
- 右クリックして、オプション「実行」*を選択します。
- JUnitテストを選択します。
このクラスファイルを実行すると、次のことが観察されます。
- Facebookが新しいFirefox Webブラウザーインスタンスで開きます。
- ユーザー名1とパスワード1は、ユーザー名とパスワードのフィールドへの入力として渡されます。
- ログインをクリックします。
- ログイン失敗に関するメッセージがブラウザに表示されます。
- コンソールに、「テストパス」が印刷されます。
- username2とpassword2のステップ結果1〜5が再実行されます。
簡単に言えば、シナリオが変更されず、データ値のみが変更される場合、シナリオアウトラインデータテーブルを使用することをお勧めします。