TestNG @Test Priority dans Selenium

Table des matières:

Anonim

TestNG est un framework de test, qui couvre différents types de conceptions de test comme un test unitaire, un test fonctionnel, un test de bout en bout, un test d'interface utilisateur et un test d'intégration.

Vous pouvez exécuter un ou plusieurs cas de test dans votre code Testng.

Si la priorité de test n'est pas définie lors de l'exécution de plusieurs cas de test, TestNG attribue à tous les @Test une priorité égale à zéro (0).

Maintenant, en courant; les priorités inférieures seront programmées en premier.

Dans ce tutoriel, vous apprendrez -

  • Démo du code TestNG sans priorité
  • Démo du code TestNG sans priorité par ordre alphabétique
  • Comment définir la priorité dans TestNG
  • Méthodes avec la même priorité
  • Combinant à la fois des méthodes prioritaires (ayant la même priorité) et des méthodes non prioritaires

Démo du code TestNG sans priorité

Prenons un scénario où le séquençage sera nécessaire pour réussir tous les cas de test:

Scénario: Générez un code dans lequel vous devez effectuer une recherche Google avec un mot-clé spécifique, par exemple "Facebook". Maintenant, vérifiez que le titre du navigateur est changé en "Facebook - Recherche Google".

Remarque: chaque étape que vous codez doit être dans des méthodes distinctes

Méthode 1 : Ouvrez le navigateur, dites Firefox (openBrowser ())

Méthode 2 : Lancez Google.com (launchGoogle ())

Méthode 3 : Effectuez une recherche en utilisant "Facebook" (performSearchAndClick1stLink ())

Méthode 4 : vérifier le titre de la page de recherche Google (FaceBookPageTitleVerification ())

Code pour notre scénario :

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;public class Priority_In_testNG {Pilote WebDriver;// Méthode 1: Ouvrez le navigateur, dites Firefox@Testpublic void openBrowser () {pilote = nouveau FirefoxDriver ();}// Méthode 2: Lancez Google.com@Testpublic void launchGoogle () {driver.get ("http://www.google.co.in");}// Méthode 3: effectuer une recherche en utilisant "Facebook"@Testpublic void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Rechercher']")). sendKeys ("Facebook");}// Méthode 4: vérifier le titre de la page de recherche Google.@Testpublic void FaceBookPageTitleVerification () lève une exception {driver.findElement (By.xpath (".//*[@ value = 'Rechercher']")). click ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). Contient ("Facebook - Recherche Google"), true);}}

Explication du code

Comme mentionné ci-dessus, nous avons créé 4 cas de test pour effectuer chaque action dans une méthode indépendante.

  • La première méthode (openBrowser) indique d'initialiser le navigateur Firefox.
  • La deuxième méthode (launchGoogle) indique que le lancement de Google.com se fait dans le navigateur initialisé.
  • La troisième méthode (peformSeachAndClick1stLink) indique qui effectue une recherche dans le champ de recherche (avec xpath (".//*[@title='Search ']") avec un terme de recherche comme Facebook et
  • La quatrième et dernière méthode (FaceBookPageTitleVerification) indique que cliquez sur l'icône de recherche de Google et vérifiez que le titre du navigateur a été changé en Facebook - Recherche Google.

Maintenant, exécutez ce code en utilisant testNG comme indiqué dans la vidéo, vous constaterez que tous les cas de test échouent. La raison de l'échec: comme il y a une dépendance du cas de test précédent à passer, seul le cas de test en cours d'exécution sera passé.

Dans ce cas,

  • La première méthode exécutée est openBrowser (). Il a été adopté car il n'a aucune dépendance.
  • La deuxième méthode exécutée est FaceBookPageTitleVerification (); il échoue parce que nous essayons de cliquer sur le bouton de recherche et de vérifier le titre du navigateur.
  • Vous pouvez voir que si l'activité de recherche n'est pas un processus, comment toute autre étape peut être franchie. C'est donc la raison pour laquelle mes cas de test échouent.
PASSÉ: openBrowserÉCHEC: FaceBookPageTitleVerificationÉCHEC: lancerGoogleÉCHEC: peformSeachAndClick1stLink

Démo du code TestNG sans priorité par ordre alphabétique

Si nous ne mentionnons aucune priorité, testng exécutera les méthodes @Test en fonction de l'ordre alphabétique de leurs noms de méthode quel que soit leur lieu d'implémentation dans le code.

package com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Testpublic void c_method () {System.out.println ("Je suis dans la méthode C");}@Testpublic void b_method () {System.out.println ("Je suis dans la méthode B");}@Testpublic void a_method () {System.out.println ("Je suis dans la méthode A");}@Testpublic void e_method () {System.out.println ("Je suis dans la méthode E");}@Testpublic void d_method () {System.out.println ("Je suis dans la méthode D");}}

Production

Je suis en méthode AJe suis en méthode BJe suis en méthode CJe suis en méthode DJe suis en méthode E

Bien que nous ayons défini les méthodes de manière aléatoire (c, b, a, e, d), testng a exécuté les méthodes en fonction de leurs noms de méthode en tenant compte de l'ordre alphabétique et la même chose s'est reflétée dans la sortie.

Comment définir la priorité dans TestNG

Comme vous l'avez vu dans l'exemple précédent, le séquençage est nécessaire pour réussir ce scénario, nous allons donc modifier le morceau de code précédent avec le paramètre de priorité afin que chaque test s'exécute par rapport à la priorité qui leur est assignée.

Maintenant, comme vous pouvez le voir, nous avons attribué la priorité à chaque cas de test, ce qui signifie que le cas de test sera la valeur de priorité inférieure sera exécutée en premier.

Priorité au testNG en action

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;public class Priority_In_testNG {Pilote WebDriver;// Méthode 1: Ouvrez le navigateur, dites Firefox@Test (priorité = 1)public void openBrowser () {pilote = nouveau FirefoxDriver ();}// Méthode 2: Lancez Google.com@Test (priorité = 2)public void launchGoogle () {driver.get ("http://www.google.co.in");}// Méthode 3: effectuer une recherche en utilisant "Facebook"@Test (priorité = 3)public void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Rechercher']")). sendKeys ("Facebook");}// Méthode 4: vérifier le titre de la page de recherche Google.@Test (priorité = 4)public void FaceBookPageTitleVerification () lève une exception {driver.findElement (By.xpath (".//*[@ value = 'Rechercher']")). click ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). Contient ("Facebook - Recherche Google"), true);}} 

Explication du code

Après avoir attribué la priorité à chaque cas de test, exécutez le code ci-dessus en utilisant testNG comme indiqué dans la vidéo-2 mentionnée ci-dessous.

Ici, vous pouvez voir que les cas de test sont classés par ordre de priorité. Les cas de test ayant une priorité inférieure sont exécutés en premier, c'est-à-dire qu'il y a maintenant une exécution séquentielle selon la priorité dans les cas de test. Par conséquent, tous les cas de test passent maintenant.

Notez la console d'Eclipse:

Sortie :

PASSÉ: openBrowserRÉUSSI: lancerGoogleADOPTÉ: peformSearchAndClick1stLinkADOPTÉ: FaceBookPageTitleVerification

Le numéro 0 a la priorité la plus élevée (il sera exécuté en premier) et la priorité continue en fonction du nombre donné, c'est-à-dire que 0 a la priorité la plus élevée que 1. 1 a la priorité la plus élevée que 2 et ainsi de suite.

package com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Test (priorité = 6)public void c_method () {System.out.println ("Je suis dans la méthode C");}@Test (priorité = 9)public void b_method () {System.out.println ("Je suis dans la méthode B");}@Test (priorité = 1)public void a_method () {System.out.println ("Je suis dans la méthode A");}@Test (priorité = 0)public void e_method () {System.out.println ("Je suis dans la méthode E");}@Test (priorité = 3)public void d_method () {System.out.println ("Je suis dans la méthode D");}}

Production

Je suis en méthode EJe suis en méthode AJe suis en méthode DJe suis en méthode CJe suis en méthode B 

Ici, nous avons fourni les priorités comme 0,1,3,6,9. Ainsi, la méthode ayant 0 comme priorité est exécutée en premier, puis la méthode ayant la priorité 1 et ainsi de suite. Ici, le nom de la méthode par ordre alphabétique ne sera pas pris en compte car nous avons fourni les priorités

Méthodes avec la même priorité:

Il se peut que les méthodes contiennent la même priorité. Dans ces cas, testng considère l'ordre alphabétique des noms de méthodes dont la priorité est la même.

package com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Test (priorité = 6)public void c_method () {System.out.println ("Je suis dans la méthode C");}@Test (priorité = 9)public void b_method () {System.out.println ("Je suis dans la méthode B");}@Test (priorité = 6)public void a_method () {System.out.println ("Je suis dans la méthode A");}@Test (priorité = 0)public void e_method () {System.out.println ("Je suis dans la méthode E");}@Test (priorité = 3)public void d_method () {System.out.println ("Je suis dans la méthode D");}}

Production

Je suis en méthode EJe suis en méthode DJe suis en méthode AJe suis en méthode CJe suis en méthode B

Ici, «e» et «d» sont exécutés en fonction de leurs valeurs de priorité. Mais les méthodes «a» et «c» contiennent la même valeur de priorité (6). Donc, ici testng considère l'ordre alphabétique de «a» et «c» et les exécute en conséquence.

Combinant à la fois les méthodes prioritaires (ayant la même priorité) et les méthodes non prioritaires:

Dans ce cas, nous couvrirons deux cas dans une classe de test.

  1. Méthodes ayant la même valeur de priorité.
  2. Plus d'une méthode non prioritaire.
package com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Test()public void c_method () {System.out.println ("Je suis dans la méthode C");}@Test()public void b_method () {System.out.println ("Je suis dans la méthode B");}@Test (priorité = 6)public void a_method () {System.out.println ("Je suis dans la méthode A");}@Test (priorité = 0)public void e_method () {System.out.println ("Je suis dans la méthode E");}@Test (priorité = 6)public void d_method () {System.out.println ("Je suis dans la méthode D");}}

Production:

Je suis en méthode BJe suis en méthode CJe suis en méthode EJe suis en méthode AJe suis en méthode D 
ADOPTÉ: b_methodADOPTÉ: c_methodADOPTÉ: e_methodPASSÉ: a_methodADOPTÉ: d_method

Explication:

Première préférence: Méthodes non prioritaires: 'c' et 'b': Basé sur l'ordre alphabétique 'b' a été exécuté en premier, puis 'c'.

Deuxième préférence: Méthodes prioritaires: 'a', 'e' et 'd': 'e' a été exécutée en premier car elle avait la priorité la plus élevée (0). Comme la priorité des méthodes «a» et «d» était la même, les tests ont pris en compte l'ordre alphabétique des noms de leurs méthodes. Ainsi, entre eux, «a» a été exécuté en premier, puis «d».

Sensible à la casse dans TestNG

Juste pour votre information, il existe une syntaxe standard pour définir la priorité dans testNG, c'est-à-dire @Test (priority = 4) , supposons que vous la définissiez dans une autre syntaxe, dites @Test (PRIORITY = 1), alors votre IDE l'affichera comme une erreur de compilation . Reportez-vous à l'image ci-dessous:

Conclusion:

Comme vous l'avez vu, s'il est nécessaire d'exécuter un ensemble de cas de test dans une séquence spécifique, cela peut être facilement fait en utilisant Priority en utilisant testNG comme outil d'exécution.

Ce tutoriel est rendu possible grâce aux contributions de Ramandeep Singh et Rama Krishna Gadde