Annotations TestNG

Annotations TestNG
MIN
16 Mar 2024

Dans ce tutoriel, nous allons étudier toutes les annotations TestNG ainsi que les différents attributs pris en charge. Une annotation est une étiquette ou une métadonnée qui fournit des informations supplémentaires sur une classe, une interface ou une méthode. TestNG utilise ces annotations pour fournir plusieurs fonctionnalités qui aident à construire un cadre de test robuste. À ce stade, nous allons examiner en détail chacune des annotations de TestNG et étudier leur syntaxe et leur utilisation.

Table des matières

@Test

@Test est l’annotation la plus importante et la plus utilisée de TestNG. Il est utilisé pour désigner une méthode en tant que « test ». Ainsi, toute méthode sur laquelle figure l’annotation @Test est considérée comme un test TestNG.

@Test

public void sampleTest() {

//Toute logique de test

System.out.println(« Hi ! ITtester.sk here ! ») ;

}

Examinons maintenant quelques attributs importants des annotations @Test :

1. description – l’attribut « description » est utilisé pour fournir une description de la méthode d’essai. Il contient généralement un résumé d’une ligne du test.

@Test(description = « Résumé du test »)

2. dataProvider – Cet attribut permet de créer des tests basés sur des données. Permet de spécifier le nom du fournisseur de données pour le test.

@Test(dataProvider = « nom du fournisseur de données »)

3. priorité – Cet attribut permet de classer les méthodes de test par ordre de priorité. La priorité par défaut commence à 0 et les tests sont exécutés dans l’ordre croissant.

@Test(priorité = 2)

4. enabled : cet attribut permet de déterminer si la méthode de test sera exécutée avec l’ensemble ou la classe.

@Test(enabled = false)

5. groupes – utilisés pour déterminer les groupes auxquels la méthode d’essai appartient.

@Test(groups = { « sanity », « regression » })

7. dependsOnMethods – Utilisé pour spécifier les méthodes dont dépend la méthode de test. La méthode de test n’est exécutée que lorsque les tests dépendants ont été exécutés avec succès.

@Test(dependsOnMethods = { « dependentTestMethodName » })

8. dependsOnGroups – Permet de spécifier les groupes dont dépend la méthode de test.

@Test(dependsOnGroups = { « dependentGroup » })

9. alwaysRun – Si la valeur est True, la méthode de test sera exécutée même si les méthodes dépendantes échouent.

@Test(alwaysRun=True)

10. timeOut – permet d’entrer la valeur du timeout pour le test (en millisecondes). Si le test dure plus longtemps que le délai spécifié, il est interrompu et marqué comme ayant échoué.

@Test (timeOut = 500)

@BeforeSuite

La méthode annotée n’est exécutée qu’une seule fois avant l’exécution de tous les tests de cette suite.

@AfterSuite

La méthode annotée n’est exécutée qu’une seule fois après l’exécution de tous les tests de cette suite.

@BeforeClass

La méthode annotée n’est exécutée qu’une seule fois avant l’appel de la première méthode de test de la classe actuelle.

@AfterClass

La méthode annotée n’est exécutée qu’une seule fois après l’exécution de toutes les méthodes de test de la classe actuelle.

@BeforeTest

La méthode annotée est exécutée avant toute méthode de test appartenant aux classes situées à l’intérieur de la balise.

@AfterTest

La méthode annotée est exécutée après l’exécution de toutes les méthodes de test appartenant aux classes contenues dans la balise.

@DataProvider

En utilisant @DataProvider, nous pouvons créer un cadre axé sur les données dans lequel les données sont transmises à la méthode de test appropriée et plusieurs itérations du test sont exécutées pour différentes valeurs de données de test transmises par la méthode @DataProvider. La méthode annotée par @DataProvider renvoie un tableau ou un objet 2D.

/Le fournisseur de données renvoie un tableau 2D d’une matrice 3*2

@DataProvider(name = « dataProvider1 »)

public Object[][] dataProviderMethod1() {

return new Object[][] {{« it », « tester »},{« k1 », « r1 »},{« k2 », « r2 »}} ;

}

//Cette méthode est liée au fournisseur de données ci-dessus.

/Le scénario de test sera exécuté 3 fois avec des valeurs différentes.

@Test(dataProvider = « dataProvider1 »)

public void sampleTest(String str1, String str2) {

System.out.println(str1 +  »  » + str2) ;

}

@Paramètre

La balise @Parameter est utilisée pour passer des paramètres aux scripts de test. La valeur de la balise @Parameter peut être transmise via le fichier testng.xml.

Exemple de fichier testng.xml avec la balise parameter :

<@Test (timeOut = 500) suite name= »sampleTestSuite »>

<test name= »sampleTest »>

<parameter name= »sampleParamName » value= »sampleParamValue »/>

<classes>

<class name= »TestFile » />

</classes>

</test>

</suite>

Exemple de script de test avec l’annotation @Parameter :

public class TestFile {

@Test

@Parameters(« sampleParamName »)

public void parameterTest(String paramValue) {

System.out.println(« sampleParamName =  » + sampleParamName) ;

}

@Listener

TestNG nous fournit différents types d’écouteurs avec lesquels nous pouvons effectuer une action lorsqu’un événement est déclenché. Généralement, les auditeurs testNG sont utilisés pour configurer les rapports et la journalisation.

@Listeners(PackageName.CustomizedListenerClassName.class)

public class TestClass {

WebDriver driver= new FirefoxDriver();@Test

public void testMethod(){

//tester la logique

}

}

@Factory

L’annotation @Factory contribue à l’exécution dynamique des cas de test. En utilisant l’annotation @Factory, nous pouvons passer des paramètres à l’ensemble de la classe de test pendant l’exécution du test. Les paramètres transmis peuvent être utilisés par une ou plusieurs méthodes de test de cette classe.

Dans l’exemple suivant, la classe TestFactory exécute une méthode de test dans la classe TestClass avec différents jeux de paramètres – « k1 » et « k2 ».

public class TestClass{

private String str ;

//Constructor

public TestClass(String str) {

this.str = str ;

}

@Test

public void TestMethod() {

System.out.println(str) ;

}

}

public class TestFactory{

//A cause de @Factory, la méthode de test dans la classe TestClass

//sera exécuté deux fois avec les données « k1 » et « k2 ».

@Factory

public Object[] factoryMethod() {

return new Object[] { new TestClass(« K1 »), new TestClass(« k2 ») } ;

}

}