Groupes dans TestNG
โก Rรฉsumรฉ intelligent
Groupes dans TestNG Vous pouvez ainsi รฉtiqueter les mรฉthodes de test avec des libellรฉs logiques, puis les inclure ou les exclure via une suite XML. Cette approche simplifie les tests de fumรฉe, de rรฉgression et de dรฉpendances sans rรฉรฉcriture. Java code.

TestNG est un framework de test qui couvre les tests unitaires, fonctionnels, de bout en bout, d'interface utilisateur et d'intรฉgration pour Java projets.
Vous pouvez exรฉcuter un seul package ou plusieurs packages (un package encapsule des classes apparentรฉes dans une structure de rรฉpertoire dรฉfinie) en crรฉant une suite XML et en la dรฉclenchant via Maven.
TestNG Groupes avec exemple
Vous utilisez des groupes dans TestNG quand:
- Vous ne souhaitez pas disperser les mรฉthodes de test dans de nombreuses classes uniquement par domaine fonctionnel, et
- Vous souhaitez ignorer (ne pas exรฉcuter) certains cas de test comme s'ils รฉtaient absents du code source.
- Pour atteindre ces deux objectifs, vous regroupez les mรฉthodes en catรฉgories logiques. TestNG puis respecte les filtres ยซ include ยป et ยซ exclude ยป dรฉclarรฉs dans la suite XML.
L'extrait ci-dessous illustre la syntaxe de marquage de groupe utilisรฉe sur une mรฉthode de test.
Deux noms de groupe sont utilisรฉs ici, ร savoir bonding et strong_tiesCe sont des รฉtiquettes logiques que vous pouvez renommer en fonction de votre projet.
Le <groups> Cette balise marque le dรฉbut des filtres de groupe au sein de la suite XML.
Vous personnalisez ensuite le code XML pour sรฉlectionner un groupe parmi les classes รฉtiquetรฉes. L'exemple ci-dessous illustre la syntaxe de dรฉclaration de groupe.
<courir>
<comprennent Le nom=ยซ crรฉer des liens ยป />
</courir>
</groupes>
Supposons qu'une seule classe contienne 10 mรฉthodes de test.
Parmi ces mรฉthodes :
- 6 mรฉthodes permettent de transporter le
bondinggroupe, et - 4 mรฉthodes permettent de transporter le
strong_tiesen groupe.
Ensuite, vous configurez Maven et Java chemins et utilisez les Eclipse IDE pour dรฉmontrer l'utilisation en groupe via des fichiers XML ร l'intรฉrieur d'un Java-projet Maven basรฉ sur.
Crรฉer du XML pour TestNG avec des tags
- Le fichier XML (Extensible Markup Language) du framework Maven stocke la configuration d'un ou plusieurs tests, dรฉclarรฉs ร l'intรฉrieur du รtiquette.
- Chaque entrรฉe de test est enveloppรฉe dans un รฉtiquette et peut contenir un ou plusieurs TestNG classes.
- A Java classe avec un ou plusieurs @Tester les annotations sur ses mรฉthodes sont traitรฉes comme une TestNG classe.
Plusieurs balises apparaissent en sรฉquence pour construire un fichier testng.xml fonctionnel, ร savoir , , et .
- Le L'รฉtiquette contient le nom au niveau de la suite utilisรฉ dans TestNG rapports pour les rรฉsumรฉs d'exรฉcution.
- Le <test name=โGuru Dรฉmonstration du test de fumรฉe 99โ> L'รฉtiquette contient un nom de test logique ; le rapport l'utilise pour le dรฉcompte des rรฉussites, des รฉchecs et des tests ignorรฉs, ainsi que pour le temps d'exรฉcution total et les mรฉtadonnรฉes du groupe.
- Le L'รฉtiquette pointe vers la classe de test, oรน
com.group.guru99est le paquet etTC_Class1est le nom de la classe.
<!DOCTYPE suite SYSTรME ยซ http://testng.org/testng-1.0.dtd ยป>
<suite Le nom="Suite">
<tester Le nom="Guru Dรฉmonstration du test de fumรฉe 99>
<groupes>
<courir>
<comprennent Le nom=ยซ liens forts ยป />
</courir>
</groupes>
<les classes>
<classe Le nom=ยซ com.group.guru99.TC_Class1 ยป />
</les classes>
</tester>
</suite>
Cette configuration XML est rรฉfรฉrencรฉe dans les tutoriels vidรฉo des sections suivantes.
ยซ exclure ยป ou ยซ inclure ยป dans le test XML
Si le mรฉcanisme de groupe vous semble lourd pour un petit filtre, la suite testng.xml vous permet รฉgalement d'exclure ou d'inclure des mรฉthodes de test individuelles par leur nom.
Inclure la baliseSyntaxe de la balise includecomprennent Le nom="${TEST_CASE_NAME}" />
ร noter: Vous pouvez inclure ou exclure de nombreux cas de test en une seule exรฉcution, et la mรชme syntaxe s'applique aux filtres de groupe.
Utilisation de dependsOnGroups pour une exรฉcution ordonnรฉe
Au-delร de la simple inclusion, TestNG permet ร un groupe de dรฉpendre d'un autre en utilisant le dependsOnGroups Attribut. Le lanceur garantit que chaque mรฉthode du groupe parent se termine avant le dรฉmarrage de toute mรฉthode dรฉpendante, ce qui assure la fiabilitรฉ des prรฉconditions.
- Connexion d'abord, puis transactions : รtiqueter les mรฉthodes de connexion avec
group = "auth"et des tests de transfert d'รฉtiquettes avecdependsOnGroups = {"auth"}Les tests de transfert ne s'exรฉcutent qu'aprรจs la rรฉussite de l'authentification. - Ignorer l'รฉchec : Si une mรฉthode du groupe parent รฉchoue, TestNG Au lieu de signaler un รฉchec pur et simple, cette fonction indique que les mรฉthodes dรฉpendantes sont ignorรฉes, ce qui garantit l'exactitude des rapports.
- Combiner avec alwaysRun : Les mรฉthodes de nettoyage doivent dรฉfinir
alwaysRun = trueLe processus de nettoyage continue donc de s'exรฉcuter mรชme lorsqu'un groupe en amont tombe en panne.
Ce modรจle est courant pour les suites de bout en bout oรน la configuration de l'API doit รชtre terminรฉe avant le lancement des assertions d'interface utilisateur.
Courir TestNG Regrouper, inclure, exclure du code (dรฉmo vidรฉo)
Vous trouverez ci-dessous une prรฉsentation dรฉtaillรฉe de Java le code et la suite XML qui pilotent le grouper, exclure et inclure comportement.
Scรฉnario de test: Lancez l' GuruSite bancaire de dรฉmonstration 99, vรฉrifiez quelques รฉlรฉments sur la page de connexion, entrez vos identifiants et revรฉrifiez quelques รฉlรฉments sur le tableau de bord aprรจs la connexion.
ร noter: Chaque รฉtape s'exรฉcute dans sa propre mรฉthode, mais lors de l'exรฉcution, l'ordre dรฉpend des entrรฉes de la suite XML.
- Mรฉthode 1: Initialisez le navigateur et lancez le URL (
tc01LaunchURL()). - Mรฉthode 2: Vรฉrifiez l'en-tรชte de la page de connexion (
tc02VerifyLaunchPage()). - Mรฉthode 3: Saisissez votre nom d'utilisateur et votre mot de passe sur le formulaire de connexion (
tc03EnterCredentials()). - Mรฉthode 4: Vรฉrifiez la prรฉsence de l'identifiant du gestionnaire sur le tableau de bord de l'utilisateur (
tc04VerifyLoggedInPage()). - Mรฉthode 5: Vรฉrifiez les liens supplรฉmentaires sur le tableau de bord utilisateur (
tc05VerifyHyperlinks()).
Code pour ce scรฉnario :
importer java.util.concurrent.TimeUnit ;
importer org.openqa.selenium.By ;
importer org.openqa.selenium.WebDriver ;
importer org.openqa.selenium.firefox.FirefoxConducteurs;
importer org.testng.Assert;
importer org.testng.annotations.Test ;
classe publique TC_Classe1 {
finale statique publique pilote web webDriver = New FirefoxChauffeur();
Chaรฎne launchPageHeading = "//h3[text()='Guru99 Banque']โ;
finale Chaรฎne รฉlรฉment userName = "//input[@name='uid']", รฉlรฉment_mot_de_passe = "//input[@name='password']",
รฉlรฉment_signIn = "//input[@name='btnLogin']";
finale Chaรฎne valeur_nom_utilisateur = ยซ mgr28642 ยป, valeur_mot_de_passe = ยซ ydAnate ยป;
finale Chaรฎne ID du gestionnaire = "//td[contains(text(),'ID du responsable')]";
finale Chaรฎne nouveauClient = โ//a[@href='addcustomerpage.php']โ, Transfert de fonds = "//a[@href='FundTransInput.php']";
/** Ce cas de test initialise le pilote Web */
@Tester(groupes = { ยซ crรฉer des liens ยป, ยซ liens forts ยป })
vide public tc01LancementURL() {
webDriver.manage().window().maximize();
webDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
webDriver.get("https://www.demo.guru99.com/V4/");
}
/** Vรฉrifie la prรฉsence de l'en-tรชte sur la page de connexion */
@Tester(groupes = { ยซ crรฉer des liens ยป })
vide public tc02VerifyLaunchPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),
ยซ Lโen-tรชte de la page dโaccueil nโest pas affichรฉ ยป);
System.out.println(ยซ Lโen-tรชte de la page dโaccueil sโaffiche ยป);
}
/** Saisit le nom d'utilisateur, le mot de passe, puis clique sur Se connecter */
@Tester(groupes = { ยซ crรฉer des liens ยป, ยซ liens forts ยป })
vide public tc03EnterCredentials() {
webDriver.findElement(By.xpath(userName_element)).sendKeys(userName_value);
webDriver.findElement(By.xpath(password_element)).sendKeys(password_value);
webDriver.findElement(By.xpath(signIn_element)).click();
}
/** Vรฉrifie l'identifiant du responsable sur le tableau de bord */
@Tester(groupes = { ยซ liens forts ยป })
vide public tc04VerifyLoggedInPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),
ยซ Lโรฉtiquette dโidentification du responsable nโest pas affichรฉe ยป);
System.out.println(ยซ L'รฉtiquette "ID du responsable" est affichรฉe ยป);
}
/** Vรฉrifie le lien ยซ Nouveau client ยป et le lien ยซ Transfert de fonds ยป sur le tableau de bord */
@Tester(groupes = { ยซ crรฉer des liens ยป })
vide public tc05VerifyHyperlinks() {
Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),
ยซ Le lien hypertexte pour les nouveaux clients ne s'affiche pas. ยป);
System.out.println(ยซ Le lien hypertexte pour les nouveaux clients sโaffiche ยป);
Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),
ยซ Le lien de transfert de fonds n'est pas affichรฉ ยป);
System.out.println(ยซ Le lien de transfert de fonds s'affiche ยป);
}
}
Veuillez noter : les identifiants bancaires de dรฉmonstration restent valides pendant environ 20 jours ; une exรฉcution locale peut donc afficher une erreur dโidentifiants invalides aprรจs lโexpiration de ce dรฉlai.
Explication du code :
Cinq mรฉthodes d'essai, une par action, chacune comportant un groups attribut sur le @Test annotation.
Les deux รฉtiquettes de groupe logique sont strong_ties et bonding.
- La premiรจre et la troisiรจme mรฉthode comportent les deux
bondingetstrong_tiesElles s'exรฉcutent donc chaque fois que l'un ou l'autre groupe est inclus dans la suite. Il s'agit d'un modรจle courant pour les applications partagรฉes. cas de test pas. - La deuxiรจme mรฉthode est uniquement รฉtiquetรฉe avec
bonding, il ne fonctionne donc que lorsque lebondingLe groupe est inclus. - La quatriรจme mรฉthode est uniquement รฉtiquetรฉe avec
strong_ties, donc il ne s'exรฉcute que lorsque ce groupe est inclus. - La cinquiรจme mรฉthode est uniquement รฉtiquetรฉe avec
bonding, il ne fonctionne donc que lorsque lebondingLe groupe est inclus.
Les quatre scรฉnarios d'exรฉcution suivants s'ensuivent :
Scenario 1 : Exรฉcutez chaque mรฉthode de test, quel que soit le groupe. Supprimez le <groups> bloc extrait du XML en cours d'exรฉcution.
Scenario 2 : Exรฉcuter uniquement les mรฉthodes liรฉes ร un groupe choisi, ร savoir strong_ties or bondingVeuillez vous rรฉfรฉrer ร la vidรฉo ci-dessous.
- Dans la premiรจre partie de la vidรฉo,
<groups>Le bloc est commentรฉ, donc chaque mรฉthode de test s'exรฉcute. - Dans la deuxiรจme partie, le filtre de groupe est rรฉtabli et seules les mรฉthodes correspondantes sont exรฉcutรฉes.
Scenario 3 : Utilisez le filtre d'exclusion pour ignorer les cas de test sรฉlectionnรฉs. Veuillez consulter la vidรฉo.
- La dรฉmo exclut
tc02par son nom dans le fichier XML en cours d'exรฉcution, et le rapport de rรฉsultats confirme que la mรฉthode exclue ne s'exรฉcute pas.
Scenario 4 : Appliquez le filtre d'inclusion pour exรฉcuter uniquement tc01LaunchURL, tc03EnterCredentials et tc05VerifyHyperlinksVeuillez vous rรฉfรฉrer ร la vidรฉo.
Dans cette exรฉcution, seules les mรฉthodes listรฉes dans le filtre d'inclusion s'exรฉcutent, exactement comme configurรฉ.
Tรฉlรฉchargez l'exemple de projet ร partir du lien ci-dessous.
Conclusion
Groupes dans TestNG structurer les grands Selenium et des suites d'unitรฉs en remplaรงant les divisions de classes ponctuelles par des filtres XML dรฉclaratifs.
รtiquetez vos mรฉthodes avec @Test(groups = {...}), puis utilisez <include>, <exclude> et dependsOnGroups pour exรฉcuter des tests de fumรฉe, de rรฉgression et de bout en bout ร partir du mรชme projet Maven sur TestNG 7.x.

