Dépendance dans TestNG

La règle est que chaque méthode d’essai doit être indépendante des autres, c’est-à-dire que j. le résultat ou la performance d’une méthode d’essai ne doit pas affecter les autres méthodes d’essai. Cependant, dans le cadre de l’automatisation, il peut arriver qu’une méthode de test dépende d’autres méthodes.
Nous pouvons vouloir préserver les dépendances entre les méthodes de test pour gagner du temps, ou pour des scénarios dans lesquels l’appel à l’exécution d’un test particulier dépend du résultat d’un autre test.
TestNG est un cadre de test qui nous fournit deux attributs – dependsOnMethod et dependsOnGroup dans l’annotation @Test pour créer des dépendances entre les tests. Examinons maintenant ces attributs.
Table des matières
Dépend de la méthode
En utilisant l’attribut « dependsOnMethod » dans l’annotation @Test, nous pouvons spécifier le nom de la méthode de test parent dont le test doit dépendre.
Quelques points à retenir concernant dependsOnMethod :
- Lors de l’exécution d’une classe de test ou d’une suite de tests complète, la méthode parentTest est exécutée avant la méthode dependentTest.
- Si nous exécutons dependentTest lui-même, la méthode parentTest est également exécutée avant dependentTest.
- Si la méthode parentTest échoue, la méthode dependentTest ne s’exécutera pas et sera considérée comme ignorée.
@Test(dependsOnMethods={« parentTest »})
Extrait de code
Dans l’extrait de code suivant, nous avons deux méthodes de test – parentTest() et dependentTest(). La méthode dependentTest dépend de la méthode parentTest à l’aide de l’attribut dependsOnMethods.
public class TutorialExample {
@Test
public void parentTest() {
System.out.println("Running parent test.");
}
@Test(dependsOnMethods={"parentTest"})
public void dependentTest() {
System.out.println("Running dependent test.");
}
}
Récupéré de
Lorsque la méthode dependentTest() est elle-même exécutée, la méthode parentTest() est également exécutée avant la méthode dependentTest(). Ceci est fait dans le but de maintenir la dépendance.
Running parent test.
Running dependent test.
PASSED: parentTest
PASSED: dependentTest
===============================================
Default test
Tests run: 2, Failures: 0, Skips: 0
===============================================
Dépend du groupe
L’attribut dependsOnGroup est utilisé pour faire dépendre une méthode de test d’un ensemble de tests appartenant à un groupe spécifique. Cela garantit que le test dépendant est exécuté après que tous les tests du groupe parent ont été exécutés.
Quelques points à retenir concernant DependsOnMethod :
- Lors de l’exécution d’une classe de test ou d’une suite de tests complète, les tests appartenant au groupe parent sont exécutés avant les tests dépendants.
- Si nous exécutons dependentTest lui-même, tous les tests appartenant au groupe parent seront exécutés avant dependentTest.
- Si un ou tous les tests de la méthode du groupe parent échouent, la méthode dependentTest ne s’exécutera pas et sera considérée comme ignorée.
@Test(dependsOnGroups = « groupA »)
Extrait de code
Dans l’extrait de code suivant, nous avons deux méthodes de test – testMethod1ForGroupA() et testMethod2ForGroupA(), qui appartiennent au groupe groupA. Nous avons ensuite une méthode dependentTest – dependentTestOnGroupA, qui dépend des méthodes du groupeA à l’aide de l’attribut dependsOnGroups. Pour les besoins de la démonstration, nous faisons délibérément échouer la méthode testMethod2ForGroupA.
public class TutorialExample {
@Test(groups = "groupA")
public void testMethod1ForGroupA() {
System.out.println("Running test method1 of groupA");
}
@Test(groups = "groupA")
public void testMethod2ForGroupA() {
System.out.println("Running test method2 of groupA");
Assert.fail();
}
@Test(dependsOnGroups = "groupA")
public void dependentTestOnGroupA() {
System.out.println("Running the dependent test");
}
}
Résultat de TestNG
Lorsque la fonction dependentTestOnGroupA() elle-même est exécutée ou que la classe de test entière est exécutée, nous pouvons observer la sortie suivante.

Ici, nous pouvons observer que TestNG essaie d’exécuter les 3 tests et, en raison de la dépendance, il exécute d’abord testMethod1ForGroupA et testMethod2ForGroupA. Puisque testMethod2ForGroupA a échoué, dependentTest, t. j. dependentTestOnGroupA, n’est pas exécuté et est marqué comme ignoré.