Cucumber-data-tables
提供:Dev Guides
キュウリ-データテーブル
自動化に取り組んでいる間、さまざまなシナリオに直面する可能性があります。 各シナリオには、異なる意味とニーズがあります。
初めから、ソーシャルネットワーキングサイトのログイン機能の例を取り上げており、2つの入力パラメーターを渡すだけでした。 もう少し可能性を考えてみましょう。 「新規ユーザー登録」機能はどうですか? 通常、ソーシャルネットワーキングサイトに新しいユーザーを登録する際の入力パラメーターは何ですか? 次のようなもの-
- ユーザー名
- 電子メールアドレス
- パスワード
- パスワード再入力
- 誕生日
- 性別
- 電話番号
機能-新規ユーザー登録。
誤った入力を渡した後、新しいユーザー登録が失敗することを確認します。
私は新しいユーザー登録ページにいます。
ユーザー名と電子メールアドレスを電子メールアドレスとパスワードとして入力し、パスワードとして、誕生日、性別、電話番号を再入力すると、ユーザー登録が失敗するはずです。
一見少し面倒です。 だから、そのような入力の塊を管理するより良い方法はありますか? 答えは「データテーブル」です。 データテーブルは、単一のタグに提供される入力のセットです。 このタグは、GIVEN、WHEN、またはTHENのいずれかです。
データテーブルの助けを借りて上記のシナリオを書いてみましょう。次のようになります-
私は新しいユーザー登録ページにいます
ページに有効なデータを入力すると
| Fields | Values |
| First Name | Tom |
| Last Name | Kenny |
| Email Address | [email protected] |
| Re-enter Email Address | [email protected] |
| Password | Password1 |
| Birthdate | 01 |
その後、ユーザー登録が成功するはずです。
例
データテーブルの例を自動化しましょう。
- ステップ1 *-「DataTableTest」という名前の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の依存関係を追加-これはMavenを示します。どのCucumberファイルが中央リポジトリからローカルリポジトリにダウンロードされます。
- もう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>
- バイナリを検証します。
- pom.xmlが正常に編集されたら、保存します。
- [プロジェクト]→[クリーン]に移動します-数分かかります。
ステップ2 *- *src/test/java の下に dataTable という名前のパッケージを作成する
- ステップ3 *-フィーチャーファイルを作成します。
- パッケージdataTable内に dataTable .featureという名前の機能ファイルを作成します(詳細な手順については、シナリオの概要を参照してください)。 次のテキストを書きます。 + 機能*-データテーブル+間違った入力を渡した後、新しいユーザー登録が失敗することを確認します。 + シナリオ: +新しいユーザー登録ページにいる場合+ページに無効なデータを入力した場合
| Fields | Values |
| First Name | Tom |
| Last Name | Kenny |
| Email Address | [email protected] |
| Re-enter Email Address | [email protected] |
| Password | Password1 |
| Birthdate | 01 |
その後、ユーザー登録は失敗するはずです
- ファイルを保存してください。
- ステップ4 *-ステップ定義ファイルを作成します。
- パッケージdataTable内に「dataTable.java」という名前のステップ定義ファイルを作成します(詳細な手順については、セクションシナリオの概要を参照してください)。
- 次のコードを書きます。
package dataTable;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;
import cucumber.table.DataTable;
public class stepdefinition {
WebDriver driver = null;
@Given("^I am on new user registration page$")
public void goToFacebook() {
//Intiate web browser instance. driver = new FirefoxDriver();
driver.navigate().to("https://www.facebook.com/");
}
@When("^I enter invalid data on the page$")
public void enterData(DataTable table){
//Initialize data table
List<list> data = table.raw();
System.out.println(data.get(1).get(1));
//Enter data
driver.findElement(By.name("firstname")).sendKeys(data.get(1).get(1));
driver.findElement(By.name("lastname")).sendKeys(data.get(2).get(1));
driver.findElement(By.name("reg_email__")).sendKeys(data.get(3).get(1));
driver.findElement(By.name("reg_email_confirmation__")).
sendKeys(data.get(4).get(1));
driver.findElement(By.name("reg_passwd__")).sendKeys(data.get(5).get(1));
Select dropdownB = new Select(driver.findElement(By.name("birthday_day")));
dropdownB.selectByValue("15");
Select dropdownM = new Select(driver.findElement(By.name("birthday_month")));
dropdownM.selectByValue("6");
Select dropdownY = new Select(driver.findElement(By.name("birthday_year")));
dropdownY.selectByValue("1990");
driver.findElement(By.className("_58mt")).click();
//Click submit button driver.findElement(By.name("websubmit")).click();
}
@Then("^User registration should be unsuccessful$")
public void User_registration_should_be_unsuccessful() {
if(driver.getCurrentUrl().equalsIgnoreCase("https://www.facebook.com/")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
}
- ファイルを保存してください。
- ステップ5 *-ランナークラスファイルを作成します。
- パッケージ内にrunTest.javaという名前のランナークラスを作成します。
- 次のコードを書きます。
package dataTable;
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 Webサイトがロードされます。
- データは登録ページに入力されます。
- [送信]ボタンをクリックします。
- ホームページが表示されず、コンソールに「テストパス」が書き込まれることがわかります。