TestNG: Comment exécuter plusieurs suites de tests dans Selenium

Table des matières:

Anonim

TestNG vous permet d'exécuter des méthodes de test, des classes de test et des cas de test en parallèle dans votre projet. En effectuant une exécution parallèle, nous pouvons réduire le «temps d'exécution» car les tests sont lancés et exécutés simultanément dans différents threads.

Ici, nous allons voir comment exécuter plusieurs classes (aka différentes suites) en utilisant TestNG.

Étape 1) Création d'un fichier TestNG.xml pour l'exécution du test

Pour ce faire, suivez les étapes ci-dessous.

  1. Créer un nouveau projet dans eclipse
  2. Créez deux packages dans les projets (nommez-les com.suite1 et com.suite2)
  3. Créez une classe dans chaque package (nommez-les Flipkart.java et Snapdeal.java) et copiez le code ci-dessous dans les classes respectives
  4. Créez un nouveau fichier dans votre projet et nommez-le testng.xml (assurez-vous d'avoir installé le plugin de test pour eclipse, instructions disponibles ici). Testng.xml contient toute la configuration (noms de classe, noms de test et noms de costume.

Flipkart.java

package com.suite1;import java.util.concurrent.TimeUnit;import org.openqa.selenium.Alert;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.interactions.Actions;import org.testng.annotations.AfterClass;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test;classe publique Flipkart {Pilote WebDriver = nouveau FirefoxDriver ();String username = ""; // Changez votre nom d'utilisateur et votre mot de passeString password = "";// Cette méthode consiste à naviguer dans l'URL du flipkart@Avant les courspublic void init () {driver.manage (). window (). maximiser ();driver.manage (). timeouts (). implicitlyWait (60, TimeUnit.SECONDS);driver.navigate (). to ("https://www.flipkart.com");}// Pour vous connecter à flipkart@Testpublic void login () {driver.findElement (By.partialLinkText ("Connexion")). click ();driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-email")).sendKeys (nom d'utilisateur);driver.findElement (Par.cssSelector (". Fk-input.login-form-input.user-pwd")).sendKeys (mot de passe);driver.findElement (By.cssSelector (". submit-btn.login-btn.btn")). click ();}// Recherche de produit@Testpublic void searchAndSelectProduct () {driver.findElement (By.id ("fk-top-search-box")). sendKeys ("moto g3");driver.findElement (By.cssSelector ("search-bar-submit.fk-font-13.fk-font-bold")).Cliquez sur();// sélectionne le premier élément dans les résultats de la rechercheString css = ".gd-row.browse-grid-row: nth-of-type (1)> div: nth-child (1)> div> div: nth-child (2)> div> a";driver.findElement (By.cssSelector (css)). click ();}@Testpublic void buyAndRemoveFromCart () {driver.findElement (By.cssSelector (". Btn-express-checkout.btn-big.current")).Cliquez sur();driver.findElement (By.cssSelector (". remove.fk-inline-block")). click ();Alert a = driver.switchTo (). Alert ();a.accept ();}@Testpublic void logout () {Actions s = nouvelles actions (pilote);Utilisateur WebElement = driver.findElement (By.partialLinkText (nom d'utilisateur));s.moveToElement (utilisateur) .build (). perform ();driver.findElement (By.linkText ("Déconnexion")). click ();}@Après les courspublic void quit () {driver.close ();}}

SnapDeal.java

package com.suite2;import java.util.concurrent.TimeUnit;import org.openqa.selenium.Alert;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.interactions.Actions;import org.testng.annotations.AfterClass;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test;public class SnapDeal {Pilote WebDriver = nouveau FirefoxDriver ();String username = ""; // Changez votre nom d'utilisateur et votre mot de passeString password = "";String pinCode = "";// Cette méthode consiste à naviguer dans l'URL snapdeal@Avant les courspublic void init () {driver.manage (). window (). maximiser ();driver.manage (). timeouts (). implicitlyWait (60, TimeUnit.SECONDS);driver.navigate (). to ("https://www.snapdeal.com");}// Pour vous connecter à flipkart@Testpublic void login () {driver.findElement (By.xpath ("// bouton [text () = 'Connexion']")). click ();driver.switchTo (). frame ("loginIframe");driver.findElement (By.cssSelector ("div [onClick = 'getLoginForm ()']")).Cliquez sur();driver.findElement (By.id ("j_username")). sendKeys (username);driver.findElement (By.id ("j_password_login")). sendKeys (mot de passe);driver.findElement (By.id ("signin_submit")). click ();driver.switchTo (). defaultContent ();}// Recherche de produit@Testpublic void searchAndSelectProduct () {driver.findElement (By.cssSelector (". col-xs-20.searchformInput.keyword")).sendKeys ("iphone 6s");driver.findElement (By.cssSelector (". sd-icon.sd-icon-search")). click ();// sélectionne le premier élément dans les résultats de la rechercheString css = ".product_grid_row: nth-of-type (1)> div: nth-child (1)";driver.findElement (By.cssSelector (css)). click ();}@Testpublic void buyAndRemoveFromCart () {driver.findElement (By.xpath ("// li [contient (text (), 'Silver')]")). click ();driver.findElement (By.id ("vérification du code PIN")). sendKeys (code pin);driver.findElement (By.id ("buy-button-id")). click ();driver.findElement (By.cssSelector ("i [title = 'Supprimer l'élément']")). click ();Alert a = driver.switchTo (). Alert ();a.accept ();}@Testpublic void logout () {driver.findElement (By.linkText ("COMMENCER LES ACHATS MAINTENANT")). click ();Actions s = nouvelles actions (pilote);WebElement user = driver.findElement (By.cssSelector (". Sd-icon.sd-icon-user"));s.moveToElement (utilisateur) .build (). perform ();driver.findElement (By.linkText ("Déconnexion")). click ();}@Après les courspublic void quit () {driver.close ();}}

TestNg.xml

La structure finale du projet ressemble à ci-dessous,

Étape 2) Exécution parallèle dans TestNG

Après avoir créé le fichier xml comme indiqué ci-dessus, à l'étape suivante, nous exécuterons le test parallèle. Ci-dessous le code.

1) thread-count : Ceci est utilisé pour l'exécution parallèle, basée sur le script de nombre. Il s'exécutera dans un ordre parallèle ou séquentiel.

2) verbeux : il est utilisé pour enregistrer les détails de l'exécution dans la console. La valeur doit être comprise entre 1 et 10. Les détails du journal dans la fenêtre de la console deviendront plus détaillés et plus clairs à mesure que vous augmenterez la valeur de l'attribut verbose dans le fichier de configuration testng.xml.

3) nom : nom de la suite. Ici, c'est "Gmail Suite"

4) Parallèle : pour exécuter des scripts en parallèle, la valeur peut être tests / classes / méthodes / suites. La valeur par défaut est aucune

Faites un clic droit sur le testng.xml et sélectionnez exécuter comme test, une fois réussi, vous verrez tous les résultats

Lorsque vous exécutez le code ci-dessus, vous obtiendrez la sortie suivante.

Production:

1) nom de la suite donné dans testng.xml

2) nom du test donné dans testng.xml

3) nom de la classe donné dans testng.xml

4) noms de méthodes annotés avec @Test dans un fichier .java

De même, il exécutera également une suite de tests pour l'accord instantané.

Conclusion:

Ici, nous avons vu dans l'exemple ci-dessus, comment utiliser Testng pour exécuter un test parallèle. TestNG offre la possibilité d'exécuter plusieurs tests en parallèle dans un seul fichier de configuration (XML).