Concombre - Tags

Cela semble simple lorsque nous n'avons qu'un, deux ou peut-être cinq scénarios dans un fichier d'entités. Cependant, dans la vraie vie, cela n'arrive pas. Pour chaque fonctionnalité testée, nous pouvons avoir 10, 20 ou plus de scénarios dans un seul fichier de fonctionnalités. Ils peuvent représenter différents objectifs (Test de fumée / Test de régression), différentes perspectives (Développeur / QA / BA), différents statuts (Prêt pour exécution / Travail en cours), etc. Comment gérer l'exécution pour une telle masse?

Pour cela, Cucumber a déjà fourni un moyen d'organiser l'exécution de votre scénario en utilisant des balises dans le fichier d'entités. Nous pouvons définir chaque scénario avec une balise utile. Plus tard, dans le fichier runner, nous pouvons décider quelle balise spécifique (et donc en tant que scénario (s)) nous voulons que Cucumber exécute. La balise commence par «@». Après «@», vous pouvez avoir n'importe quel texte pertinent pour définir votre balise. Comprenons cela avec un exemple.

Supposons qu'il existe deux scénarios ou plus dans un fichier d'entités. Nous voulons exécuter un seul scénario dans le cadre du test de fumée. Donc, la première chose est d'identifier ce scénario et la deuxième est de le baliser avec le texte «@SmokeTest» au début du scénario. Jetons un coup d'œil à cela -

Step 1 - Créez un projet Maven nommé comme cucumberTag.

Step 2- Créez un package nommé cucumberTag sous src/test/java

Step 3- Créez un fichier d'entités nommé cucumberTag.feature.

Écrivez le texte suivant dans le fichier et enregistrez-le. Ce fichier de fonctionnalités contient deux scénarios où un seul a été marqué commeSmokeTest marque.

Feature - Étiquette de concombre

Scenario Outline - Fonctionnalité de connexion pour un site de réseautage social.

L'utilisateur donné accède à Facebook

Lorsque j'entre le nom d'utilisateur comme "<username>" et le mot de passe comme "<mot de passe>"

La connexion devrait alors échouer

Exemples

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

Le scénario #following a été marqué comme SmokeTest et cela devrait être exécuté. @Test de fumée

Scenario:

L'utilisateur donné accède à Facebook

Lorsque j'entre le nom d'utilisateur comme "<>" et le mot de passe comme "<>"

Ensuite, l'utilisateur doit être redirigé vers une nouvelle tentative de connexion

Step 4 - Créez un fichier de définition d'étape.

  • Sélectionnez et cliquez avec le bouton droit sur le contour du package.

  • Cliquez sur "Nouveau" fichier.

  • Donnez au fichier un nom tel que cucumberTag.java

  • Écrivez le texte suivant dans le fichier et enregistrez-le.

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 - Créez un fichier de classe de coureur.

  • Créez une classe de coureur nommée comme runTest.java à l'intérieur de l'emballage.

  • Écrivez le code suivant.

  • Enregistrez le fichier.

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

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

public class runTest { }
  • Exécutez l'option de test.

  • Faites un clic droit et sélectionnez l'option ‘Run as’.

  • Sélectionnez le test JUnit.

Vous observerez les choses suivantes lorsque vous exécuterez ce fichier de classe.

  • Facebook s'ouvre dans une nouvelle instance de navigateur Web Firefox.

  • Aucune valeur ne sera fournie au nom d'utilisateur et au champ du mot de passe.

  • La connexion sera cliquée.

  • La page de nouvelle tentative de connexion sera chargée.

Il n'y a pas de limite à la définition des balises dans le fichier d'entités. En fonction de vos besoins, vous pouvez dériver des balises à utiliser et des scénarios à exécuter.

Il existe principalement deux types de balises -

  • Default tag- La balise par défaut a sa signification prédéfinie. Exemple @ Dev, @ Ignore

  • Custom tag - La balise personnalisée vous offre une flexibilité totale pour choisir le texte approprié pour définir votre balise.

La balise peut également être définie au niveau de la fonction. Une fois que vous avez défini une balise au niveau de la fonctionnalité, cela garantit que tous les scénarios de ce fichier de fonctionnalités héritent de cette balise. Selon la nature du scénario, nous pouvons utiliser plusieurs balises pour une seule fonctionnalité. Chaque fois que Cucumber trouve un appel approprié, un scénario spécifique sera exécuté.

Le concombre fournit également un moyen d'inverser le choix des balises. Considérez que sur 25 scénarios définis, 10 sont marqués comme test de fumée. Nous sommes tenus d'exécuter uniquement des scénarios de test de régression.

Pour cela, nous pouvons utiliser «~» dans la classe d'exécution JUnit pour exclure le scénario de test de fumée. Cela ressemblera à ce qui suit.

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

public class runTest { }

Lors de la définition de plusieurs balises, nous pouvons également définir des opérations logiques ou / et logiques.

  • Définition logique ou en classe coureur - @dev,@wip - Il indique que les scénarios correspondant à l'une de ces balises doivent être exécutés.

  • Définition logique ou en classe coureur - [@dev,[email protected]] − Il indique que les scénarios correspondant à ces deux balises doivent être exécutés.