Cetriolo - Tag
Sembra semplice quando abbiamo solo uno, due o forse cinque scenari in un file di funzionalità. Tuttavia, nella vita reale non accade. Per ogni funzionalità in prova, potremmo avere 10, 20 o un numero maggiore di scenari in un singolo file di funzionalità. Possono rappresentare scopi diversi (Smoke test / Regression test), prospettive diverse (Sviluppatore / QA / BA), stati diversi (Pronto per l'esecuzione / Lavori in corso), ecc. Come gestire l'esecuzione per una tale massa?
Per questo, Cucumber ha già fornito un modo per organizzare l'esecuzione dello scenario utilizzando i tag nel file delle caratteristiche. Possiamo definire ogni scenario con un tag utile. Successivamente, nel file runner, possiamo decidere quale tag specifico (e così come gli scenari) che vogliamo che Cucumber esegua. Il tag inizia con "@". Dopo "@" puoi avere qualsiasi testo pertinente per definire il tuo tag. Capiamolo con un esempio.
Supponiamo che ci siano due o più scenari in un file di funzionalità. Vogliamo eseguire solo uno scenario come parte del test del fumo. Quindi la prima cosa è identificare quello scenario e la seconda è taggarlo con il testo "@SmokeTest" all'inizio dello scenario. Diamo uno sguardo approfondito a questo -
Step 1 - Crea un progetto Maven denominato come cucumberTag.
Step 2- Crea un pacchetto denominato cucumberTag sotto src/test/java
Step 3- Crea un file di funzionalità denominato cucumberTag.feature.
Scrivi il testo seguente all'interno del file e salvalo. Questo file di funzionalità contiene due scenari in cui solo uno è stato contrassegnato comeSmokeTest etichetta.
Feature - Tag cetriolo
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
Esempi
| username | password |
| username1 | password1 |
| username2 | password2 |
Lo scenario #following è stato contrassegnato come SmokeTest e dovrebbe essere eseguito. @Test del fumo
Scenario:
Dato l'utente naviga su Facebook
Quando inserisco il nome utente come "<>" e la password come "<>"
Quindi l'utente dovrebbe essere reindirizzato per riprovare ad accedere
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 un nome come cucumberTag.java
Scrivi il testo seguente all'interno del file e salvalo.
package cucumberTag;
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 cucumberTag {
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();
}
@Then("^User should be redirected to login retry$")
public void loginRetry() {
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();
}
}
Step 5 - Crea un file di classe corridore.
Crea una classe di corridori chiamata come runTest.java all'interno della confezione.
Scrivi il codice seguente.
Salva il file.
package cucumberTag;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
public class runTest { }
Esegui l'opzione di prova.
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.
Nessun valore verrà fornito al campo nome utente e password.
Fare clic su Login.
La pagina di nuovo tentativo di accesso verrà caricata.
Non ci sono limiti nella definizione dei tag all'interno del file delle caratteristiche. In base alle tue necessità, puoi derivare i tag da utilizzare e gli scenari da eseguire.
Esistono principalmente due tipi di tag:
Default tag- I tag predefiniti hanno i loro significati predefiniti. Esempio @ Dev, @ Ignore
Custom tag - Il tag personalizzato offre la massima flessibilità per scegliere il testo appropriato per definire il tag.
Il tag può anche essere definito a livello di funzionalità. Una volta definito un tag a livello di funzionalità, si garantisce che tutti gli scenari all'interno di quel file di funzionalità ereditino quel tag. A seconda della natura dello scenario, possiamo utilizzare più di un tag per la singola funzionalità. Ogni volta che Cucumber trova una chiamata appropriata, verrà eseguito uno scenario specifico.
Il cetriolo fornisce anche un modo per invertire la scelta dei tag. Considera che su 25 scenari definiti, 10 sono contrassegnati come test del fumo. Siamo tenuti a eseguire solo scenari di test di regressione.
Per questo, possiamo usare "~" nella classe runner JUnit per escludere lo scenario del test del fumo. Sarà simile al seguente.
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}, tags = {"~@SmokeTest"})
public class runTest { }
Durante la definizione di più tag, possiamo anche definire logiche e / o logiche e operazioni.
Definizione logica o in classe corridore - @dev,@wip - Dice che gli scenari che corrispondono a uno qualsiasi di questo tag devono essere eseguiti.
Definizione logica o in classe corridore - [@dev,~@wip] − Dice che gli scenari che corrispondono a entrambi questi tag devono essere eseguiti.