Cetriolo - Schema dello scenario

Scenario outlinesostanzialmente sostituisce variabile / parole chiave con il valore dalla tabella. Ogni riga della tabella è considerata uno scenario.

Continuiamo con lo stesso esempio della funzione di accesso a Facebook. Finora abbiamo eseguito uno scenario: dopo aver fornito il nome utente corretto, l'accesso è riuscito. Supponiamo ora di voler controllare se l'accesso è riuscito per tutti e tre i possibili tipi di input, che sono nome utente, indirizzo e-mail o numero di telefono. Per ottenere ciò, avremo bisogno di scrivere tre diversi scenari, in cui ogni scenario varierà a seconda del tipo di input, l'accesso è riuscito. In questo caso, gli scenari appariranno come i seguenti.

Scenario:

Dato l'utente naviga su Facebook

Quando inserisco nome utente e password corretti

Quindi il login dovrebbe avere successo

Scenario:

Dato l'utente naviga su Facebook

Quando inserisco l'indirizzo email e la password corretti

Quindi il login dovrebbe avere successo

Scenario:

Dato l'utente naviga su Facebook

Quando inserisco il numero di telefono e la password corretti

Quindi il login dovrebbe avere successo

Qui, se vediamo da vicino, per i tre scenari precedenti: le dichiarazioni sono le stesse, cambia solo il parametro di input (nome utente / indirizzo e-mail / numero di telefono). È qui che entra in gioco l'importanza dello schema dello scenario.

Quando definiamo uno scenario con lo schema dello scenario, possiamo specificare uno scenario di test e in fondo possiamo fornire una serie di input. Lo scenario verrà eseguito tante volte quante sono gli input forniti.

Esempio

Creiamo un esempio di schema di uno scenario:

Step 1 - Crea un progetto di test Maven denominato come ScenarioOutlineTest

  • Vai a File → Nuovo → Altri → Maven → Progetto Maven → Avanti.

  • Fornisci l'ID del gruppo (l'ID del gruppo identificherà il tuo progetto in modo univoco in tutti i progetti).

  • Fornisci ID artefatto (l'ID artefatto è il nome del vaso senza versione. Puoi scegliere qualsiasi nome in minuscolo).

  • Fare clic su Fine.

  • Aperto 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 dependencies, crea il tag dependency (<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>
  • 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 "struttura" sotto src/test/java

Step 3 - Crea un file di funzionalità denominato “outline.feature”

  • Seleziona e fai clic con il pulsante destro del mouse sulla struttura del pacchetto.

  • Fare clic su "Nuovo" file.

  • Assegna il nome del file come “outline.feature”

    • Scrivi il testo seguente all'interno del file e salvalo.

      Feature - Schema dello scenario

      Scenario Outline - Funzionalità di accesso per un sito di social networking.

      Dato l'utente naviga su Facebook

      Quando inserisco il nome utente come "<username>" e la password come "<password>"

      Quindi il login dovrebbe avere esito negativo

Example -

| username  | password  | 
| username1 | password1 | 
| username2 | password2 |

Note- Qui, l'annotazione di esempio descrive l'intervallo di input da fornire durante l'esecuzione dello scenario. Lo scenario di test verrà eseguito per ciascuno degli input forniti. Quindi, nell'esempio fornito, lo scenario di test verrà eseguito tre volte.

Step 4 - Crea un file di definizione del passaggio.

  • Seleziona e fai clic con il pulsante destro del mouse sulla struttura del pacchetto.

  • Fare clic su "Nuovo" file.

  • Assegna al file il nome stepdefinition.java

  • Scrivi il testo seguente all'interno del file e salvalo.

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(); 
   }    
}

Note- Nel codice sopra, dobbiamo definire una funzione con due argomenti di input: uno username e l'altro sarà per la password. Quindi, per ogni set di input fornito nel tag di esempio, verrà eseguito Set of GIVEN, WHEN e THEN.

Step 5 - Crea un file di classe corridore.

  • Seleziona e fai clic con il pulsante destro del mouse sulla struttura del pacchetto.

  • Fare clic su "Nuovo" file.

  • Assegna il nome del file come runTest.java

  • Scrivi il testo seguente all'interno del file e salvalo.

package Outline; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})

public class runTest { }
  • Esegui il test utilizzando l'opzione -

    • Selezionare runTest.java file da Package Explorer.

    • Fare clic con il tasto destro e selezionare l'opzione ‘Run as’.

    • Seleziona JUnit test.

Osserverai le seguenti cose quando esegui questo file di classe

  • Facebook si apre in una nuova istanza del browser Web Firefox.

  • Nome utente1 e password1 verranno passati come input al campo nome utente e password.

  • Fare clic su Login.

  • Sul browser verrà visualizzato un messaggio relativo all'accesso non riuscito.

  • Nella console, vedrai stampato "Test Pass".

  • I risultati dei passaggi da 1 a 5 verranno rieseguiti per nome utente2 e password2.

In poche parole, quando lo scenario non cambia ma cambia solo il valore dei dati, si consiglia di utilizzare le tabelle dei dati di struttura dello scenario.