きゅうり-データテーブル
自動化に取り組んでいる間、私たちはさまざまなシナリオに直面する可能性があります。各シナリオには、異なる意味とニーズがあります。
当初から、ソーシャルネットワーキングサイトのログイン機能の例を取り上げてきました。ここでは、2つの入力パラメーターを渡すだけでした。もう少し可能性を考えてみましょう。「新規ユーザー登録」機能はどうですか?通常、ソーシャルネットワーキングサイトに新しいユーザーを登録する際の入力パラメーターは何でしょうか。次のようなもの-
- ユーザー名
- 電子メールアドレス
- Password
- パスワード再入力
- Birthdate
- Gender
- 電話番号
Feature −新規ユーザー登録。
間違った入力を渡した後、新しいユーザー登録が失敗することを確認します。
私が新しいユーザー登録ページにいると仮定します。
ユーザー名と電子メールアドレスを電子メールアドレスとパスワードとして入力し、パスワードをと生年月日と性別と電話番号を再入力すると、ユーザー登録が失敗するはずです。
一見少し乱雑に見えます。それで、そのような入力のチャンクを管理するためのより良い方法はありますか?答えは「データテーブル」です。データテーブルは、単一のタグに提供される入力のセットです。このタグには、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 |
その後、ユーザー登録が成功するはずです。
例
データテーブルの例を自動化してみましょう。
Step 1 −「DataTableTest」という名前のMavenテストプロジェクトを作成します。
「ファイル」→「新規」→「その他」→「Maven」→「Mavenプロジェクト」→「次へ」に移動します。
提供する group Id (グループIDは、すべてのプロジェクトでプロジェクトを一意に識別します)。
提供する artifact Id (アーティファクトIDは、バージョンのないjarの名前です。小文字の任意の名前を選択できます)。
[完了]をクリックします。
pom.xmlを開きます-
Eclipseの左側にあるパッケージエクスプローラーに移動します。
プロジェクトCucumberTestを展開します。
pom.xmlファイルを見つけます。
右クリックして、「テキストエディタで開く」オプションを選択します。
Seleniumの依存関係を追加する:これは、中央リポジトリからローカルリポジトリにダウンロードされるSeleniumjarファイルであるMavenを示します。
pom.xmlを編集モードで開き、プロジェクトタグ内に依存関係タグ(<dependencies> </ dependencies>)を作成します。
依存関係タグ内に、依存関係タグを作成します。(<依存関係> </依存関係>)。
依存関係タグ内に次の情報を入力します。
<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の依存関係を追加-これは、中央リポジトリからローカルリポジトリにダウンロードされるCucumberJUnitファイルであるMavenを示します。
もう1つの依存関係タグを作成します。
依存関係タグ内に次の情報を入力します。
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
JUnitの依存関係を追加-これは、中央リポジトリからローカルリポジトリにダウンロードされるJUnitファイルをMavenに示します。
もう1つの依存関係タグを作成します。
依存関係タグ内に次の情報を入力します
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
バイナリを確認します。
pom.xmlが正常に編集されたら、保存します。
プロジェクト→クリーンに移動-数分かかります。
Step 2 −という名前のパッケージを作成します dataTable 下 src/test/java
Step 3 −フィーチャーファイルを作成します。
次の名前の機能ファイルを作成します dataTableパッケージdataTable内の.feature(詳細な手順については、シナリオの概要のセクションを参照してください)。
次のテキストを書いてください。
Feature −データテーブル
間違った入力を渡した後、新しいユーザー登録が失敗することを確認します。
Scenario:
私が新しいユーザー登録ページにいるとすると
ページに無効なデータを入力すると
| Fields | Values |
| First Name | Tom |
| Last Name | Kenny |
| Email Address | [email protected] |
| Re-enter Email Address | [email protected] |
| Password | Password1 |
| Birthdate | 01 |
その後、ユーザー登録は失敗するはずです
ファイルを保存します。
Step 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();
}
}
ファイルを保存します。
Step 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のウェブサイトが読み込まれます。
データは登録ページに入力されます。
送信ボタンがクリックされます。
ホームページが表示されず、コンソールに「テストパス」と表示されます。