Cetriolo - Tabelle dati
Mentre lavoriamo sull'automazione, potremmo affrontare una varietà di scenari. Ogni scenario ha un significato e bisogni diversi.
Fin dall'inizio, abbiamo preso un esempio di funzionalità di accesso per un sito di social network, dove avevamo solo due parametri di input da passare. Pensiamo a qualche altra possibilità. Che ne dici della funzionalità "Registrazione nuovo utente"? In genere, quali possono essere i parametri di input durante la registrazione di un nuovo utente per un sito di social networking? Qualcosa di simile al seguente -
- Nome utente
- Indirizzo email
- Password
- Reinserire la password
- Birthdate
- Gender
- Numero di telefono
Feature - Nuova registrazione utente.
Verificare che la registrazione del nuovo utente non sia andata a buon fine dopo aver passato gli input errati.
Dato che sono su una nuova pagina di registrazione utente.
Quando inserisco il nome utente e un indirizzo e-mail come indirizzo e-mail e la password come, e reinserisco la password come e Data di nascita come e Sesso come e numero di telefono come allora la registrazione dell'utente dovrebbe fallire.
A prima vista sembra un po 'disordinato. Quindi, esiste un modo migliore per gestire una tale porzione di input? La risposta può essere "Tabella dati". La tabella dati è un insieme di input da fornire per un singolo tag. Questo tag può essere GIVEN, WHEN o THEN.
Scriviamo lo scenario sopra con l'aiuto della tabella dei dati e sarà simile al seguente:
Dato che sono su una nuova pagina di registrazione utente
Quando inserisco dati validi nella pagina
| Fields | Values |
| First Name | Tom |
| Last Name | Kenny |
| Email Address | [email protected] |
| Re-enter Email Address | [email protected] |
| Password | Password1 |
| Birthdate | 01 |
Quindi la registrazione dell'utente dovrebbe andare a buon fine.
Esempio
Automatizziamo un esempio di una tabella dati.
Step 1 - Creare un progetto di test Maven denominato "DataTableTest".
Vai a File → Nuovo → Altri → Maven → Progetto Maven → Avanti.
Fornire group Id (l'ID di gruppo identificherà il tuo progetto in modo univoco in tutti i progetti).
Fornire artifact Id (l'ID artefatto è il nome del vaso senza versione. Puoi scegliere qualsiasi nome in minuscolo).
Fare clic su Fine.
Apri pom.xml -
Vai a Esplora pacchetti sul lato sinistro di Eclipse.
Espandi il progetto CucumberTest.
Individua il file pom.xml.
Fare clic con il tasto destro e selezionare l'opzione Apri con "Editor di testo".
Aggiungi dipendenza per Selenium: questo indicherà Maven, quali file jar Selenium devono essere scaricati dal repository centrale al repository locale.
Apri pom.xml è in modalità di modifica, crea il tag delle dipendenze (<dependencies> </dependencies>), all'interno del tag del progetto.
All'interno del tag delle dipendenze, crea il tag delle dipendenze. (<dependency> </dependency>).
Fornisci le seguenti informazioni all'interno del tag di dipendenza.
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.47.1</version>
</dependency>
Aggiungi dipendenza per Cucumber-Java: questo indicherà Maven, quali file Cucumber devono essere scaricati dal repository centrale al repository locale.
Crea un altro tag di dipendenza.
Fornisci le seguenti informazioni all'interno del tag di dipendenza.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
Aggiungi dipendenza per Cucumber-JUnit - Questo indicherà Maven, quali file Cucumber JUnit devono essere scaricati dal repository centrale al repository locale.
Crea un altro tag di dipendenza.
Fornisci le seguenti informazioni all'interno del tag di dipendenza.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
Aggiungi dipendenza per JUnit: indica Maven, quali file JUnit devono essere scaricati dal repository centrale al repository locale.
Crea un altro tag di dipendenza.
Fornisci le seguenti informazioni all'interno del tag di dipendenza
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
Verifica i binari.
Una volta modificato con successo pom.xml, salvalo.
Vai a Progetto → Pulisci - Ci vorranno alcuni minuti.
Step 2 - Crea un pacchetto denominato dataTable sotto src/test/java
Step 3 - Crea un file Feature.
Crea un file di caratteristiche, denominato come dataTable.feature all'interno del pacchetto dataTable (vedere la sezione schema dello scenario per i passaggi più dettagliati).
Scrivi il testo seguente.
Feature - Tabella dati
Verificare che la registrazione del nuovo utente non sia andata a buon fine dopo aver passato input errati.
Scenario:
Dato che sono nella pagina di registrazione del nuovo utente
Quando inserisco dati non validi nella pagina
| Fields | Values |
| First Name | Tom |
| Last Name | Kenny |
| Email Address | [email protected] |
| Re-enter Email Address | [email protected] |
| Password | Password1 |
| Birthdate | 01 |
Quindi la registrazione dell'utente dovrebbe fallire
Salva il file.
Step 4 - Crea file di definizione della fase.
Creare il file di definizione del passaggio denominato "dataTable.java" all'interno del pacchetto dataTable (vedere la sezione Schema dello scenario per i passaggi più dettagliati).
Scrivi il codice seguente.
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();
}
}
Salva il file.
Step 5 - Crea un file di classe corridore.
Crea una classe runner denominata runTest.java all'interno del pacchetto.
Scrivi il codice seguente.
package dataTable;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
public class runTest { }
Salva il file.
Esegui il test utilizzando l'opzione
Seleziona il file runTest.java da Esplora pacchetti.
Fare clic con il tasto destro e selezionare l'opzione Esegui come.
Seleziona JUnit test.
È possibile osservare le seguenti cose in caso di esecuzione riuscita.
Il sito Web di Facebook viene caricato.
I dati verranno inseriti nella pagina di registrazione.
Fare clic sul pulsante Invia.
Vedremo che la home page non verrà visualizzata e sulla console verrà scritto “Test Pass”.