Groupes de test – Inclure et exclure (exemple)
TestNG est un cadre de test qui couvre différents types de conceptions de tests tels que les tests unitaires, fonctionnels, de bout en bout, d'interface utilisateur et d'intégration.
Vous pouvez exécuter un ou plusieurs packages (le package signifie ici encapsuler un groupe de classes dans un format de directeur approprié) en créant du XML et en l'exécutant via maven.
TestNG Groupes avec exemple
Nous utilisons des groupes dans Tester quand,
- Nous ne voulons pas définir les méthodes de test séparément dans différentes classes (en fonction de la fonctionnalité) et
- En même temps, vous souhaitez ignorer (ne pas exécuter) certains cas de test comme s'ils n'existaient pas dans le code.
- Donc pour réaliser cela, nous devons les regrouper. Cela se fait en utilisant les mécanismes « inclure » et « exclure » pris en charge dans testNG.
Dans l'exemple ci-dessous, nous avons montré la syntaxe d'utilisation des groupes dans le fichier XML.
@Test (groups = { "bonding", "strong_ties" })
Ici, nous utilisons 2 noms de groupe, à savoir « bonding » et « strong_ties » (ce sont les noms logiques qui peuvent être modifiés selon votre souhait).
<groups>
La balise définit le démarrage des groupes en XML.
Personnalisez votre XML pour sélectionner le groupe mentionné dans les classes de test. Ci-dessous est mentionnée la syntaxe permettant de déclarer des groupes dans un fichier XML, par exemple
<groups> <run> <include name="bonding" /> </run> </groups>
Supposons donc qu’il existe 10 méthodes de test dans une classe.
Hors d'eux,
- 6 méthodes sont étiquetées dans le groupe « bonding » et
- 4 sont dans le groupe « strong_ties »
À l'avenir, nous allons définir maven/Java chemin et utilisez le Eclipse IDE pour démontrer l'utilisation de groupes utilisant des fichiers XML dans Java projet maven basé.
Créer du XML pour TestNG avec des tags
- Le fichier XML (Extensible Markup Language) du framework Maven contient les informations d'un ou plusieurs tests et est défini par le étiqueter.
- Les informations de test en XML sont représentées par étiqueter et peut contenir un ou plusieurs TestNG classes.
- A Java classe qui contient @Tester L'annotation ci-dessus sur les méthodes de test est définie comme TestNG méthodes.
Plusieurs balises sont utilisées dans une séquence pour créer un XML testNG fonctionnel comme , et
- Le premier est balise, qui contient un nom logique qui définit toutes les informations à testNG signalées pour générer le rapport d'exécution.
- La deuxième est , notez qu'il s'agit d'un nom logique qui contient les informations du rapport d'exécution du test telles que la réussite, l'échec, le saut des cas de test et d'autres informations telles que la durée totale d'exécution et les informations sur le groupe.
- Le troisième estcom.group.guru99.TC_Class1” />, com.group.guru99 est le package utilisé et le nom de la classe de test est TC_Class1.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Suite"> <test name="Guru 99 Smoke Test Demo"> <groups> <run> <include name="strong_ties" /> </run> </groups> <classes> <class name="com.group.guru99.TC_Class1" /> </classes> </test> </suite>
Nous utiliserons ce XML pour la prochaine vidéo présentée dans les sections ci-dessous.
« exclure » ou « inclure » dans le test XML
Supposons que vous trouviez l'utilisation d'un mécanisme de groupe complexe, testNG XML facilite la fonctionnalité permettant d'exclure/inclure un test.
Exclude Tag: Syntax for exclude tag <exclude name="${TEST_CASE_NAME}" /> Include Tag: Syntax for include tag <include name="${TEST_CASE_NAME}" />
Attention: Nous pouvons inclure/exclure plusieurs cas de test une fois à la fois, ce qui fonctionne également avec les groupes.
Courir TestNG Regrouper, inclure, exclure du code (démo vidéo)
Explication de la Java Code et XML avec le regrouper, exclure et inclure la balise en XML.
Scénario de test: Lancez le site bancaire de démonstration Guru99, vérifiez ensuite quelques éléments sur la page de connexion, entrez les informations d'identification et revérifiez quelques nouveaux éléments sur l'application une fois connecté.
Attention: Chaque étape que vous codez doit être déclarée dans des méthodes distinctes, mais une fois exécutée, elle exécutera des méthodes de test en fonction des entrées du fichier XML.
- Méthode 1: Initialiser le navigateur et lancer l'URL (tc01LaunchURL())
- Méthode 2: Vérifier l'en-tête de la page de connexion (tc02VerifyLaunchPage())
- Méthode 3: Entrez le nom d'utilisateur et le mot de passe sur le formulaire de connexion (tc03EnterCredentials())
- Méthode 4 : Vérifiez la présence de l'ID du gestionnaire sur le tableau de bord utilisateur (tc04VerifyLoggedInPage()).
- Méthode 5 : Vérifiez quelques liens supplémentaires sur le tableau de bord utilisateur (tc05VerifyHyperlinks())
Code pour notre scénario :
package com.group.guru99; import java.util.concurrent.TimeUnit; 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 TC_Class1 { public static final WebDriver webDriver = new FirefoxDriver();; String launchPageHeading = "//h3[text()='Guru99 Bank']"; final String userName_element = "//input[@name='uid']", password_element = "//input[@name='password']", signIn_element = "//input[@name='btnLogin']"; final String userName_value = "mngr28642", password_value = "ydAnate"; final String managerID = "//td[contains(text(),'Manger Id')]"; final String newCustomer = "//a[@href='addcustomerpage.php']", fundTransfer = "//a[@href='FundTransInput.php']"; /** * This test case will initialize the webDriver */ @Test(groups = { "bonding", "strong_ties" }) public void tc01LaunchURL() { webDriver.manage().window().maximize(); webDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); webDriver.get("http://www.demo.guru99.com/V4/"); } /** * Will check the presence of Heading on Login Page */ @Test(groups = { "bonding" }) public void tc02VerifyLaunchPage() { Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(), "Home Page heading is not displayed"); System.out.println("Home Page heading is displayed"); } /** * This test case will enter User name, password and will then click on * signIn button */ @Test(groups = { "bonding", "strong_ties" }) public void 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(); } /** * This test case will verify manger's ID presence on DashBoard */ @Test(groups = { "strong_ties" }) public void tc04VerifyLoggedInPage() { Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(), "Manager ID label is not displayed"); System.out.println("Manger Id label is displayed"); } /** * This test case will check the presence of presence of New customer link * And FundTransfer link in Left pannel */ @Test(groups = { "bonding" }) public void tc05VerifyHyperlinks() { Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(), "New customer hyperlink is not displayed"); System.out.println("New customer hyperlink is displayed"); Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(), "Fund Transfer hyperlink is not displayed"); System.out.println("Fund Transfer hyperlink is displayed"); } }
Remarque : les informations d'identification ne sont valables que 20 jours. Par conséquent, si vous essayez d'exécuter du code sur votre ordinateur local, vous risquez de rencontrer une erreur d'informations d'identification non valides.
Explication du code :
Comme mentionné ci-dessus, nous avons créé 5 cas de test pour effectuer chaque action selon des méthodes indépendantes.
Pour chaque méthode, nous avons associé un paramètre de groupe à une valeur.
Fondamentalement, ce sont les noms des groupes différenciateurs, c'est-à-dire « liens_forts » et « bonding ».
- Les première et troisième méthodes sont étiquetées « bonding », « strong_ties », ce qui signifie que si XML est mis à jour dans l'un des groupes, cela Cas de test va courir.
- La deuxième méthode est uniquement étiquetée avec le groupe « liaison », cela signifie que si XML est mis à jour avec le groupe de liaison. Ce n'est que dans ce cas que ce scénario de test sera exécuté.
- Le quatrième scénario de test est étiqueté dans le groupe strong_ties, ce qui signifie que ce scénario de test ne s'exécutera que si XML est mis à jour avec le nom du groupe strong_ties.
- Le dernier cinquième scénario de test, mais non le moindre, est attaché au groupe de liaison, ce qui signifie que ce scénario de test ne s'exécutera que si XML est mis à jour avec le nom du groupe de liaison.
Donc globalement, nous avons 4 scénarios ;
Scenario 1 : Nous souhaitons exécuter tous les cas de test quel que soit le nom du groupe. Dans ce cas, nous supprimerons la balise Group de l’exécution de XML.
Scenario 2 : Nous souhaitons exécuter quelques tests liés uniquement à l'un ou l'autre des groupes, c'est-à-dire strong_ties ou bonding. Se il vous plaît se référer:
- Dans cette vidéo, le paramètre Group est commenté à partir de l'exécution de XML. Par conséquent, vous verrez que tous les cas de test ont été exécutés.
- Dans la continuité de la vidéo, maintenant que nous avons inclus le nom du groupe en XML, vous pouvez voir que seuls les cas de test spécifiques à ce groupe sont en cours d'exécution.
Scenario 3 : Nous utilisons le mécanisme d'exclusion pour exclure le scénario de test. Veuillez vous référer à la vidéo
- Vous voyez que nous avons utilisé l'exclusion de quelques cas de test (tc02) en écrivant leur nom dans XML en cours d'exécution. Dans le résultat final, les cas de test mentionnés n’ont pas été exécutés.
Scenario 4 : Enfin, nous utilisons le mécanisme de test d'inclusion pour inclure les cas de test (tc01LaunchURL, tc03EnterCredentials et tc05VerifyHyperlinks). Veuillez vous référer à la vidéo
Dans cette vidéo, vous verrez que les cas de test mentionnés en XML ne s'exécutent que pendant l'exécution du test.
Veuillez télécharger le code à partir du code pour l'exemple ci-dessus-
Pour aller plus loin
Nous avons appris ici une manière relativement nouvelle d'exécuter des cas de test en utilisant XML dans le projet Maven.
Nous avons commencé par fournir une brève introduction à testNG et avons continué avec les spécifications techniques complètes des groupes, exclure et inclure.