Sélénium - TestNG
TestNG est un puissant framework de test, une version améliorée de JUnit qui était utilisée pendant longtemps avant que TestNG ne soit créé. NG signifie «Next Generation».
Le framework TestNG fournit les fonctionnalités suivantes -
- Les annotations nous aident à organiser les tests facilement.
- Configuration de test flexible.
- Les cas de test peuvent être regroupés plus facilement.
- La parallélisation des tests peut être réalisée à l'aide de TestNG.
- Prise en charge des tests basés sur les données.
- Rapports intégrés.
Installation de TestNG pour Eclipse
Step 1 - Lancez Eclipse et sélectionnez «Installer un nouveau logiciel».
Step 2 - Entrez l'URL comme "http://beust.com/eclipse" et cliquez sur "Ajouter".
Step 3- La boîte de dialogue «Ajouter un référentiel» s'ouvre. Entrez le nom comme 'TestNG' et cliquez sur 'OK'
Step 4 - Cliquez sur «Sélectionner tout» et «TestNG» sera sélectionné comme indiqué sur la figure.
Step 5 - Cliquez sur «Suivant» pour continuer.
Step 6 - Passez en revue les éléments sélectionnés et cliquez sur «Suivant».
Step 7 - «Acceptez le contrat de licence» et cliquez sur «Terminer».
Step 8 - TestNG commence l'installation et la progression est indiquée ci-dessous.
Step 9- Un avertissement de sécurité apparaît car la validité du logiciel ne peut pas être établie. Cliquez sur OK'.
Step 10- Le programme d'installation vous invite à redémarrer Eclipse pour que les modifications prennent effet. Cliquez sur «Oui».
Annotations dans TestNG
Des annotations ont été officiellement ajoutées au langage Java dans JDK 5 et TestNG a fait le choix d'utiliser des annotations pour annoter les classes de test. Voici quelques-uns des avantages de l'utilisation des annotations. Plus d'informations sur TestNG peuvent être trouvéeshere
TestNG identifie les méthodes qui l'intéressent en recherchant des annotations. Par conséquent, les noms de méthode ne sont limités à aucun modèle ou format.
Nous pouvons passer des paramètres supplémentaires aux annotations.
Les annotations sont fortement typées, de sorte que le compilateur signalera immédiatement toute erreur.
Les classes de test n'ont plus besoin d'étendre quoi que ce soit (comme TestCase, pour JUnit 3).
Sr.No. | Annotation et description |
---|---|
1 | @BeforeSuite La méthode annotée ne sera exécutée qu'une seule fois avant que tous les tests de cette suite ne soient exécutés. |
2 | @AfterSuite La méthode annotée ne sera exécutée qu'une seule fois après l'exécution de tous les tests de cette suite. |
3 | @BeforeClass La méthode annotée ne sera exécutée qu'une seule fois avant que la première méthode de test de la classe actuelle ne soit appelée. |
4 | @AfterClass La méthode annotée ne sera exécutée qu'une seule fois après l'exécution de toutes les méthodes de test de la classe actuelle. |
5 | @BeforeTest La méthode annotée sera exécutée avant l'exécution de toute méthode de test appartenant aux classes à l'intérieur de la balise <test>. |
6 | @AfterTest La méthode annotée sera exécutée après l'exécution de toutes les méthodes de test appartenant aux classes à l'intérieur de la balise <test>. |
sept | @BeforeGroups La liste des groupes que cette méthode de configuration exécutera avant. Il est garanti que cette méthode s'exécutera peu de temps avant que la première méthode de test appartenant à l'un de ces groupes ne soit appelée. |
8 | @AfterGroups La liste des groupes après lesquels cette méthode de configuration s'exécutera. Cette méthode est garantie de s'exécuter peu de temps après que la dernière méthode de test appartenant à l'un de ces groupes a été appelée. |
9 | @BeforeMethod La méthode annotée sera exécutée avant chaque méthode de test. |
dix | @AfterMethod La méthode annotée sera exécutée après chaque méthode de test. |
11 | @DataProvider Marque une méthode comme fournissant des données pour une méthode d'essai. La méthode annotée doit renvoyer un objet [] [] où chaque objet [] peut se voir attribuer la liste des paramètres de la méthode de test. La méthode @Test qui souhaite recevoir des données de ce DataProvider doit utiliser un nom dataProvider égal au nom de cette annotation. |
12 | @Factory Marque une méthode comme une fabrique qui renvoie des objets qui seront utilisés par TestNG comme classes de test. La méthode doit renvoyer Object []. |
13 | @Listeners Définit les écouteurs sur une classe de test. |
14 | @Parameters Décrit comment passer des paramètres à une méthode @Test. |
15 | @Test Marque une classe ou une méthode comme faisant partie du test. |
Configuration de TestNG-Eclipse
Step 1 - Lancez Eclipse et créez un «Nouveau projet Java» comme indiqué ci-dessous.
Step 2 - Entrez le nom du projet et cliquez sur «Suivant».
Step 3 - Accédez à l'onglet "Bibliothèques" et ajoutez le fichier JAR du serveur de contrôle à distance Selenium en cliquant sur "Ajouter des fichiers JAR externes" comme indiqué ci-dessous.
Step 4- Le fichier JAR ajouté est affiché ici. Cliquez sur «Ajouter une bibliothèque».
Step 5- La boîte de dialogue «Ajouter une bibliothèque» s'ouvre. Sélectionnez «TestNG» et cliquez sur «Suivant» dans la boîte de dialogue «Ajouter une bibliothèque».
Step 6 - La bibliothèque 'TestNG' ajoutée est ajoutée et s'affiche comme indiqué ci-dessous.
Step 7 - Lors de la création du projet, la structure du projet serait comme indiqué ci-dessous.
Step 8 - Faites un clic droit sur le dossier 'src' et sélectionnez Nouveau >> Autre.
Step 9 - Sélectionnez «TestNG» et cliquez sur «Suivant».
Step 10 - Sélectionnez le nom du «dossier source» et cliquez sur «OK».
Step 11 - Sélectionnez le 'Nom du package', le 'nom de la classe' et cliquez sur 'Terminer'.
Step 12 - L'explorateur de packages et la classe créée seraient affichés.
Premier test dans TestNG
Maintenant, commençons à créer des scripts avec TestNG. Écrivons le même exemple que celui utilisé pour comprendre le WebDriver. Nous utiliserons l'application de démonstration, www.calculator.net , et effectuerons un calculateur de pourcentage.
Dans le test suivant, vous remarquerez qu'il n'y a AUCUNE méthode principale, car testNG pilotera le flux d'exécution du programme. Après avoir initialisé le pilote, il exécutera la méthode '@BeforeTest' suivie de '@Test' puis de '@AfterTest'. Veuillez noter qu'il peut y avoir n'importe quel nombre d'annotations «@Test» dans une classe, mais «@BeforeTest» et «@AfterTest» ne peuvent apparaître qu'une seule fois.
package TestNG;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class TestNGClass {
WebDriver driver = new FirefoxDriver();
@BeforeTest
public void launchapp() {
// Puts an Implicit wait, Will wait for 10 seconds before throwing exception
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// Launch website
driver.navigate().to("http://www.calculator.net");
driver.manage().window().maximize();
}
@Test
public void calculatepercent() {
// Click on Math Calculators
driver.findElement(By.xpath(".//*[@id='menu']/div[3]/a")).click();
// Click on Percent Calculators
driver.findElement(By.xpath(".//*[@id='menu']/div[4]/div[3]/a")).click();
// Enter value 10 in the first number of the percent Calculator
driver.findElement(By.id("cpar1")).sendKeys("10");
// Enter value 50 in the second number of the percent Calculator
driver.findElement(By.id("cpar2")).sendKeys("50");
// Click Calculate Button
driver.findElement(By.xpath(".//*[@id='content']/table/tbody/tr/td[2]/input")).click();
// Get the Result Text based on its xpath
String result =
driver.findElement(By.xpath(".//*[@id='content']/p[2]/span/font/b")).getText();
// Print a Log In message to the screen
System.out.println(" The Result is " + result);
if(result.equals("5")) {
System.out.println(" The Result is Pass");
} else {
System.out.println(" The Result is Fail");
}
}
@AfterTest
public void terminatetest() {
driver.close();
}
}
Exécution
Pour l'exécuter, faites un clic droit sur le XML créé et sélectionnez "Exécuter en tant que" >> "TestNG Suite"
Analyse des résultats
La sortie est envoyée à la console et elle apparaîtra comme indiqué ci-dessous. La sortie de la console a également un résumé de l'exécution.
Le résultat de TestNG peut également être vu dans un autre onglet. Cliquez sur le bouton "Affichage du rapport HTML" comme indiqué ci-dessous.
Le résultat HTML serait affiché comme indiqué ci-dessous.