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.

