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”.