Dataprovider & TestNG XML : Paramétrage dans Selenium(Exemple)

Juin 9, 2021
admin

Lorsque nous créons un logiciel, nous souhaitons toujours qu’il fonctionne différemment avec un ensemble différent de données. Lorsqu’il s’agit de tester un même logiciel, nous ne pouvons pas être injustes en le testant avec un seul jeu de données. Là encore, nous devons vérifier que notre système prend en charge tous les ensembles de combinaisons qui sont censés l’être. Pour cela, nous devons paramétrer nos tests. Voici la paramétrisation dans l’image.

Paramétrage dans Selenium

Le paramétrage dans Selenium est un processus permettant de paramétrer les scripts de test afin de passer plusieurs données à l’application lors de l’exécution. C’est une stratégie d’exécution qui exécute automatiquement les cas de test plusieurs fois en utilisant différentes valeurs. Le concept réalisé en paramétrant les scripts de test est appelé Data Driven Testing.

Dans ce tutoriel, vous apprendrez-

  • Type de paramétrage dans TestNG-
  • Anotation Paramètres avec Testng.xml
  • Dépannage
  • Paramètres utilisant Dataprovider
  • Invocation de DataProvider à partir d’une classe différente
  • Types de paramètres dans Dataprovider

Type de paramétrage dans TestNG-

Pour rendre le paramétrage plus clair, nous allons passer en revue les options de paramétrage dans l’un des frameworks les plus populaires pour Selenium Webdriver – TestNG.

Il existe deux façons par lesquelles nous pouvons réaliser le paramétrage dans TestNG

  1. Avec l’aide de l’annotation Parameters et du fichier XML TestNG.

  2. Avec l’aide de l’annotation DataProvider.

Les paramètres de Testng.xml peuvent être de niveau suite ou test

Les paramètres de DataProvider peuvent prendre Method et ITestContext comme paramètre.

Etudions-les en détail –

Anotation de paramètres dans TestNG

L’annotation de paramètres dans TestNG est une méthode utilisée pour passer des valeurs aux méthodes de test comme arguments en utilisant le fichier .xml. Les utilisateurs peuvent être amenés à passer les valeurs aux méthodes de test pendant l’exécution. La méthode d’annotation @Parameters peut être utilisée dans toute méthode ayant l’annotation @Test, @Before, @After ou @Factory.

Annotation des paramètres avec Testng.xml

Sélectionnez le paramétrage en utilisant les annotations lorsque vous voulez effectivement traiter la complexité &le nombre de combinaisons d’entrée est moindre.

Voyons comment cela fonctionne

Scénario de test

Etape 1) Lancer le navigateur &aller sur Google.com

Etape 2) Entrer un mot-clé de recherche

Etape 3) Vérifier que la valeur entrée est la même que celle fournie par nos données de test

Etape 4) Répéter 2 & 3 jusqu’à ce que toutes les valeurs soient entrées

Test Author Clé de recherche
Guru99 Inde
Krishna USA
Bhupesh Chine

Voici un exemple de comment faire SANS paramètres

Une étude, l’exemple ci-dessus. Imaginez juste la complexité du code lorsque nous le ferons pour 3 combinaisons d’entrée

Maintenant, paramétrons ceci en utilisant TestNG

Pour ce faire, vous devrez

  • Créer un fichier XML qui stockera les paramètres
  • Dans le test, ajouter l’annotation @Parameters

Voici le code complet

Test Niveau TestNG.xml

Fichier ParameterWithTestNGXML.java

Instructions pour exécuter le script, sélectionnez le fichier XML et Exécuter comme Test NG Suite

Clic droit sur .xml file -> Run as -> Testng Suite (Note : Suite)

Maintenant, les paramètres peuvent être définis à 2 niveaux

  1. Niveau de la suite – Les paramètres à l’intérieur de la balise <suite> du fichier XML TestNG seront un paramètre de niveau de la suite.
  2. Niveau de test — Les paramètres à l’intérieur de la balise <Test> du fichier XML de test seront un paramètre de niveau de test.

Voici le même test avec les paramètres de niveau de suite

NOTE : Dans le cas où le nom du paramètre est le même dans le niveau de suite et le niveau de test alors le paramètre de niveau de test aura la préférence sur le niveau de suite. Donc, dans ce cas, toutes les classes à l’intérieur de ce niveau de test partageront le paramètre surchargé, et les autres classes qui sont à l’extérieur du niveau de test partageront le paramètre de niveau de suite.

Dépannage

Issue # 1 La valeur du paramètre dans testng.xml ne peut pas être typée au paramètre de la méthode de test correspondante, il jettera une erreur.

Considérez l’exemple suivant

Ici, l’attribut ‘author’ est égal à ‘Guru99’ qui est une chaîne de caractères et dans la méthode de test correspondante, il attend une valeur entière, donc nous aurons une exception ici.

Issue # 2 Vos @Paramètres n’ont pas de valeur correspondante dans testing.xml.

Vous pouvez résoudre cette situation en ajoutant l’annotation @optional dans le paramètre correspondant dans la méthode de test.

Sujet n° 3 : Vous voulez tester plusieurs valeurs du même paramètre en utilisant Testng.xml

La réponse simple est que cela ne peut pas être fait ! Vous pouvez avoir plusieurs paramètres différents, mais chaque paramètre ne peut avoir qu’une seule valeur. Cela permet d’éviter le codage en dur des valeurs dans le script. Cela rend le code réutilisable. Pensez-y comme à des fichiers de configuration pour votre script. Si vous voulez utiliser plusieurs valeurs pour un paramètre, utilisez DataProviders

Data Provider in TestNG

Data Provider in TestNG est une méthode utilisée lorsqu’un utilisateur doit passer des paramètres complexes. Les paramètres complexes doivent être créés à partir de Java tels que des objets complexes, des objets provenant de fichiers de propriétés ou d’une base de données peuvent être passés par la méthode data provider. La méthode est annotée par @DataProvider et elle renvoie un tableau d’objets.

Paramètres utilisant Dataprovider

L’annotation @Parameters est facile mais pour tester avec plusieurs ensembles de données, nous devons utiliser Data Provider.

Pour remplir des milliers de formulaires web en utilisant notre framework de test, nous avons besoin d’une méthodologie différente qui peut nous donner un très grand ensemble de données dans un seul flux d’exécution.

Ce concept axé sur les données est réalisé par l’annotation @DataProvider dans TestNG.

Elle ne possède qu’un seul attribut ‘name’. Si vous ne spécifiez pas l’attribut ‘name’ alors le nom du DataProvider sera le même que le nom de la méthode correspondante.

Le fournisseur de données renvoie un objet JAVA bidimensionnel à la méthode de test et la méthode de test, sera invoquée M fois dans un tableau d’objets de type M*N. Par exemple, si le DataProvider renvoie un tableau de 2*3 objets, le testcase correspondant sera invoqué 2 fois avec 3 paramètres à chaque fois.

Exemple complet

Invoquer le DataProvider depuis une classe différente

Par défaut, le DataProvider réside dans la même classe où se trouve la méthode de test ou dans sa classe de base. Pour le mettre dans une autre classe, nous devons rendre la méthode du fournisseur de données comme statique et dans la méthode de test, nous devons ajouter un attribut dataProviderClass dans l’annotation @Test.

Exemple de code

TestClass ParameterDataproviderWithClassLevel.java

DataproviderClass.java

Types de paramètres dans Dataprovider

Il y a deux types de paramètres supportés par la méthode DataProvider.

Méthode- Si le MÊME DataProvider doit se comporter différemment avec différentes méthodes de test , utilisez le paramètre Méthode.

Dans l’exemple suivant ,

  • Nous vérifions si le nom de la méthode est testMethodA.
  • Si oui, nous retournons un ensemble de valeurs
  • Else, nous retournons un autre ensemble de valeurs

Voici la sortie

ITestContext- Il peut être utilisé pour créer différents paramètres pour les cas de test basés sur des groupes.

Dans la vie réelle, vous pouvez utiliser ITestContext pour faire varier les valeurs des paramètres en fonction des méthodes de test, des hôtes, des configurations du test.

Dans l’exemple de code suivant

  • Nous avons 2 groupes A & B
  • Chaque méthode de test est assignée à un groupe
  • Si la valeur du groupe est A, un ensemble de données particulier est retourné
  • Si la valeur du groupe est B, un autre ensemble de données est retourné

Note : Si vous exécutez directement votre classe testng, elle appellera d’abord dataprovider qui ne peut pas obtenir les informations des groupes car les groupes ne sont pas disponibles. Mais au lieu de cela, si vous appelez cette classe via testng.xml, elle aura des informations sur les groupes disponibles avec ITestContext. Utilisez le XML suivant pour appeler le test

Summary :

  • Le paramétrage est nécessaire pour créer des tests pilotés par les données.
  • TestNG supporte deux types de paramétrage, en utilisant @Parameter+TestNG.xml et en utilisant@DataProvider
  • Dans @Parameter+TestNG.xml les paramètres peuvent être placés au niveau de la suite et au niveau du test. Si

    Le même nom de paramètre est déclaré dans les deux endroits ; le paramètre de niveau test aura la préférence sur le paramètre de niveau suite.

  • en utilisant @Parameter+TestNG.xml, une seule valeur peut être définie à la fois, mais @DataProvider retourne un tableau 2d d’Object.
  • Si DataProvider est présent dans la classe différente puis la classe où réside la méthode de test,DataProvider devrait être une méthode statique.
  • Il y a deux paramètres supportés par DataProvider sont Method et ITestContext.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.