Dans ce tutoriel, nous allons discuter des ensembles exhaustifs de Questions et réponses d'entrevue Critical TestNg et répartis en fonction du niveau de difficulté, où vous pourrez mieux vous équiper rapidement sur TestNg
Ces ensembles de questions d'entretien Testng sont distribués dans les modules ou ensembles suivants:
Questions d'entrevue TestNg - Advance
- Comment exclure un groupe du cycle d'exécution des tests?
- How réaliser l'implémentation de TestNG itestlistener?
- Comment implémenter testng iAnnotationtransformer?
- Comment implémenter testng iinvokedmethodlistener?
- Comment implémenter des fournisseurs de données dans TestNG
- Si nous ne définissons pas la priorité de la méthode de test dans quel ordre les tests sont exécutés dans TestNG
- Quels sont les types de rapports générés par défaut dans TestNG?
- Mentionner la différence entre la suite de tests TestNG et le test TestNG?
- Quelle est l'utilisation de l'attribut threadPoolSize avec l'annotation @Test
- Que font les attributs alwaysRun?
- Quels sont les différents auditeurs disponibles?
- Quelle est la valeur par défaut de la priorité TestNG?
- Comment réexécuter les tests ayant échoué TestNg à l'aide du mécanisme de relance automatique?
- Comment exécuter vos scripts de test en parallèle?
- Comment intégrer TestNg avec GRADLE build Tool?
- Comment exécuter l'écouteur Testng Default avec Gradle pour générer un rapport à l'aide de la bibliothèque TestNg
- Comment exécuter le fichier xml Testng Runner à l'aide de l'invite de commande?
- Comment intégrer TestNg XML avec Maven?
- Comment pouvez-vous spécifier le paramètre TestNg Test à l'aide de TestNg et Maven?
Questions d'entrevue TestNg - Intermédiaire
- Qu'entend-on par invocationCount dans TestNG?
- Que sont les auditeurs dans TestNG?
- Mentionner les différences entre les annotations @Factory et @Dataprovider dans TestNg?
- Comment utiliser TestNG Reporter Class pour la génération de journaux?
- Comment gérer les exceptions dans TestNG?
- Comment réaliser l'injection de dépendances via TestNg XML?
- Quelles sont les différentes approches d'assertion pour TestNG?
- Mentionnez certaines des assertions couramment utilisées avec TestNG
- Que comprenez-vous par les affirmations dans TestNG?
- Différence entre l'affirmation ferme et l'assertion souple dans TestNg
- Comment écrire une assertion souple dans TestNg
- Comment utiliser l'expression régulière dans les groupes TestNG?
Questions d'entrevue TestNg - De base
- Qu'est-ce que TestNG?
- Quels sont les avantages de TestNg?
- Comment déclencher et exécuter le script de test TestNg?
- Indiquez les annotations Testng disponibles?
- Mentionner la séquence d'exécution des annotations TestNg?
- Comment désactiver l'exécution de test pour un script de test?
- Comment pouvez-vous spécifier des écouteurs dans TestNG xml?
- Quel est le test de délai d'attente dans TestNg?
- Comment réaliser le test d'exception attendu avec TestNG?
- Quelle est la différence entre les annotations @BeforeTest et # @ BeforeMethod?
- Quel est l'avantage d'utiliser le fichier testng.xml?
- Combien de types de dépendances pouvez-vous atteindre en utilisant TestNG?
Questions et réponses d'entrevue Testng || Ensemble 1
Comment exclure un groupe du cycle d'exécution des tests?
Vous pouvez utiliser la balise d'exclusion pour exclure un groupe de cas de test de l'exécution de la manière ci-dessous dans le fichier xml Testng
Quels sont les types de rapports générés par défaut dans TestNG?
TestNG génère 4 types de rapports après l'exécution, qui sont :
- Rapport HTML TestNG
- Rapport TestNG par e-mail
- XML du rapport TestNG
- Rapport XML d'échec de TestNg
Mentionner la différence entre la suite de tests TestNG et le test TestNG?
La suite de tests TestNG est la collection de classes de test et de méthodes de test qui peuvent être exécutées simultanément ou parallèlement à partir du fichier XML TestNG.
D'autre part, la méthode de test TestNG est un fichier de cas de test unique ou une méthode de test.
Quelle est l'utilisation de l'attribut threadPoolSize avec l'annotation @Test
Grâce à l'attribut threadPoolSize, nous pouvons définir un pool de threads avec la taille spécifique mentionnée par le numéro de la méthode de test à exécuter via plusieurs threads disponibles.
L'attribut est ignoré si invocationCount n'est pas mentionné.
@Test (threadPoolSize = 3)
public void testCaseOne(){
System.out.println("testCaseOne en cours");
}
Dans la méthode de test ci-dessus, testCaseOne sera appelé à partir des trois threads différents.
Que font les attributs alwaysRun?
Cet attribut d'annotation AlwaysRun est utilisé chaque fois que vous souhaitez exécuter la méthode de test, quels que soient les paramètres dépendants dont dépend la méthode de test, échoue. Si vous définissez sur true, vous devez définir l'attribut sur true.
Quels sont les différents auditeurs disponibles?
- ITestListener
- I Reporter
- ISuiteListener
- IAnnotationTransformateur
- IAnnotationTransformer2
- IAccrochable
- IInvokedMethodListenerInvokedMethodListener
- IMethodInterceptor
Quelle est la valeur par défaut de la priorité TestNG?
La priorité TestNG a la valeur par défaut est zéro.
Comment réexécuter les tests ayant échoué TestNg à l'aide du mécanisme de relance automatique?
TestNg fournit une interface appelée IRéessayerAnalyzer écouteur dont vous pouvez implémenter l'interface, réexécutez automatiquement vos scripts de test d'échec en mentionnant la classe dans le fichier testNg.XML, voici le code ci-dessous pour l'implémentation de la même chose:
Dans la zone ci-dessus, vous pouvez configurer le nombre de ré-essais, le nombre maximum et vous pouvez également mentionner dans quelles exceptions vous souhaitez réexécuter les scripts de test.
public class Retry implémente IRetryAnalyzer { int retryCounter = 0; // Le nombre maximum d'échecs d'exécution int autoRetryLimit = 2; @Override public boolean retry(ITestResult iTestResult) { if (retryCounter < autoRetryLimit) { retryCounter++; retourner vrai ; } retourne faux ; } }
Deuxième approche: comment réexécuter les tests ayant échoué TestNg à l'aide du mécanisme de nouvelle tentative automatique
Dans l'approche ci-dessous, vous pouvez créer 2 classes, c'est-à-dire qu'une est Réessayer la classe où vous pouvez garder la logique de contrôle du nombre d'itérations en cas d'échec des tests qui implémentera l'interface Testng IRéessayerAnalyzer.
Une autre classe est essentiellement qui implémentera un autre écouteur d'interface IAnnotationTransformer et implémentera la méthode transform qui interagit en interne avec la classe précédente (ie Réessayer la classe)
public class Retry implémente IRetryAnalyzer { int retryCounter = 0; // Le nombre maximum d'échecs d'exécution int autoRetryLimit = 2; @Override public boolean retry(ITestResult iTestResult) { if (retryCounter < autoRetryLimit) { retryCounter++; retourner vrai ; } retourne faux ; } }
et enfin ajouter le Classe CognitiveRetry dans l'écouteur du fichier testng.xml.
<listeners>
<listener class-name= "com.lambdageeks.cognitiveRetryUtils.CognitiveRetry"/>
</listeners>
Comment réaliser l'implémentation de TestNG itestlistener?
ITestListener est une interface dans TestNg qui a plusieurs méthodes (non implémentées car c'est une interface) qui peuvent être implémentées par une classe. Chaque méthode représente des fonctionnalités ou des scénarios spécifiques, par conséquent, en fonction de vos besoins, vous pouvez implémenter ces méthodes.
À titre d'exemple surTestÉchec est une méthode que vous pouvez implémenter là où vous souhaitez effectuer des opérations alors qu'une méthode de test échoue, disons que vous voulez capturer la capture d'écran en cas d'échec de la méthode de test, afin que vous puissiez écrire la méthode takecreenshot dans le surTestÉchec , et comme ITestListener est une interface, testNg continuera à écouter les événements (échecs de test) et chaque fois qu'il y a des échecs de test, votre capture d'écran sera capturée.
Voici la mise en œuvre de la capture d'écran chaque fois que vous testez le script rencontre un échec:
importer org.apache.commons.io.FileUtils ; importer org.openqa.selenium.OutputType ; importer org.openqa.selenium.TakesScreenshot ; importer org.openqa.selenium.WebDriver ; importer org.testng.ITestContext ; importer org.testng.ITestListener ; importer org.testng.ITestResult ; importer java.io.File ; importer java.io.IOException ; importer java.util.logging.Logger ; classe publique CustomListerners implémente ITestListener { WebDriver driver=null ; String filePath = "D:\\\\LambdaGeeks\\\\SCREENSHOTS"; @Override public void onTestFailure(ITestResult result) { String testMethodName=String.valueOf(result.getName()).trim(); ITestContext testContext = result.getTestContext(); Pilote WebDriver = (WebDriver)testContext.getAttribute("pilote"); captureTheScreenShot(testMethodName, pilote); } public void captureTheScreenShot(String methodName, pilote WebDriver) { File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); /* Chaque capture d'écran sera enregistrée avec le nom du test pour avoir une meilleure corrélation */ try { FileUtils.copyFile(scrFile, new File(filePath+methodName+".jpg")); } catch (IOException e) { e.printStackTrace(); } } public void onFinish (contexte ITestContext) {} public void onTestStart (résultat ITestResult) { } public void onTestSuccess (résultat ITestResult) { } public void onTestSkipped (résultat ITestResult) { } public void onTestFailedButWithinSuccessPercentage (résultat ITestResult) { } public void onStart (Contexte ITestContext) { } }
Et vous devez également ajouter cette classe dans la balise d'écoute dans le fichier testng.xml comme nous l'avions fait dans la question précédente.
Comment implémenter testng iAnnotationtransformer?
TestNg fournit une interface nommée IAnnotationTransformer qui fournit une méthode appelée «transform» que vous pouvez implémenter et qui serait déclenchée à l'exécution par TestNG, cette implémentation est utilisée pour modifier le comportement d'annotation de test de la classe de test et des méthodes de test
Dans le segment ci-dessous, nous verrions comment nous pourrions le faire
public class TestClassAnnotations { @Test(alwaysRun = true,dependsOnMethods = "testMethodB") public void testMethodA() { System.out.println("--- Personnalisation du comportement d'exécution avec ITestAnnotation ---"); } @Test public void testMethodB() { System.out.println("--- Second TestMethods ---"); Assert.fail(); } }
Par défaut, si nous exécutons le code ci-dessus, une seule méthode sera exécutée qui est testMethodA et une autre méthode testMethodB échouera parce que nous échouons intentionnellement en utilisant la méthode Assert.fail ().
Mais si nous changeons le Alwaysrun = vrai annotation à false en utilisant le IAnnotationTransformateur alors cette méthode ne sera pas exécutée, voici l'extrait de code sur la façon d'implémenter le IAnnotationTransformateur et utilisez-le dans le fichier testing.xml pour changer le comportement de l'annotation TestNG
La mise en œuvre des CustomAnnotationTransformers se déroule ici:
public class CustomAnnotationTransformers implémente IAnnotationTransformer { public boolean isTestRunning(ITestAnnotation iTestAnnotation) { if (iTestAnnotation.getAlwaysRun()) { return true; } retourne faux ; } public void transform(ITestAnnotation annotations, Class testClasses, Constructor testConstructors, Method testMethods) { if (isTestRunning(annotations)) { annotations.setEnabled(false); } } }
Voici l'auditeur que nous devons ajouter dans le fichier testing.xml
<listeners>
<listener class-name= "com.lambdageeks.CustomAnnotationTransformers"/>
</listeners>
Comment implémenter testng iinvokedmethodlistener?
Si vous souhaitez implémenter une fonctionnalité où une certaine méthode sera exécutée avant et après chaque méthode de test de TestNg, cette fonctionnalité pourrait être implémentée par le testng IInvokedMethodListenerInvokedMethodListener auditeur.
Voici l'extrait de code pour implémenter les fonctionnalités:
package com.lambdageeks ; import org.testng.IInvokedMethod ; import org.testng.IInvokedMethodListener ; importer org.testng.ITestResult ; public class CustomAnnotationTransformers implements IInvokedMethodListener { public void beforeInvocation (méthode IInvokedMethod, ITestResult testResult) { System.out.println(" ::: La méthode avant de IInvokedMethodListener est déclenchée pour la méthode de test nommée : " + method.getTestMethod().getMethodName( ) + " ::: "); } public void afterInvocation(méthode IInvokedMethod, ITestResult testResult) { System.out.println(" :::: Après que la méthode de IInvokedMethodListener est déclenchée pour la méthode de test nommée : " + method.getTestMethod().getMethodName() + " : :: "); } }
Voici la classe de test pour tester la fonctionnalité:
public class TestClassAnnotations { @Test(alwaysRun = true) public void testMethoddummy() { System.out.println("--- Ceci est une méthode de test, testant la fonctionnalité de IInvokedMethodListener Testng Listener ---"); } }
Vous devez mentionner le TestNG iinvokedmethodlistener dans la balise listener du testng.xml comme toujours
<listeners>
<listener class-name="com.lambdageeks.CustomAnnotationTransformers"/>
</listeners>
La sortie de l'exécution ressemblerait à ceci:
::: Avant que la méthode de IInvokedMethodListener ne soit déclenchée pour la méthode de test nommée comme: testMethoddummy :::
- Ceci est une méthode de test, testant la fonctionnalité de IInvokedMethodListener Testng Listener -
:::: Après que la méthode de IInvokedMethodListener soit déclenchée pour la méthode de test nommée comme: testMethoddummy :::
Comment implémenter des fournisseurs de données dans TestNG?
Nous pouvons implémenter le DataProvider à l'aide de TestNg dans l'approche ci-dessous:
public class DataProviderDemo { @DataProvider(name = "dpName") public Object[][] dataProvidersMethodName() { return new Object[][]{{"Lambda"}, {"Geeks"}} ; } @Test(dataProvider = "dpName") public void dataproviderDummyTestMethod(String dataValues) { System.out.println("Les paramètres de données avec des exemples de fournisseurs de données : : " + dataValues); } }
Si nous ne définissons pas la priorité de la méthode de test dans quel ordre les tests sont exécutés dans TestNG?
Les tests sont exécutés dans l'ordre alphabétique du TestmethodName.
Comme dans l'extrait de code ci-dessous:
public class SequenceTest { @Test() public void geeks() { System.out.println("Sequence Test , Method run :geeks "); } @Test() public void lambda() { System.out.println("Sequence Test , Method run : lambda "); } @Test() public void abc() { System.out.println("Sequence Test , Method run :abc"); } }
La sortie ressemblerait à ceci:
Test de séquence, méthode exécutée: abc
Test de séquence, méthode exécutée: geeks
Test de séquence, méthode exécutée: lambda
Comment exécuter vos scripts de test en parallèle?
Vous pouvez exécuter vos scripts de test à l'aide du fichier XML TestNg en mentionnant le parallel = "méthodes" thread-count = "2", ici 2 cas parallèles seront exécutés, si vous souhaitez exécuter plus de threads en parallèle.
<suite name="DummyTest" parallel="methods" thread-count="2" >
<listeners>
<listener class-name="org.uncommons.reportng.HTMLReporter" />
<listener class-name="org.uncommons.reportng.JUnitXMLReporter" />
</listeners>
</suite>
Comment intégrer TestNg avec GRADLE build Tool?
Vous pouvez exécuter Testng Suite de différentes manières:
Comment exécuter des groupes TestNg à l'aide de Gradle: Vous pouvez créer une tâche dans le fichier build.gradle peut mentionner le useTestNG () et mentionnez les détails ci-dessous lors de l'exécution des groupes de test.
Comment exécuter l'écouteur Testng Default avec Gradle pour générer un rapport à l'aide de la bibliothèque TestNg
Si vous souhaitez utiliser l'écouteur personnalisé, vous pouvez le mentionner dans l'approche suivante:
Comment exécuter le fichier xml Testng Runner à l'aide de l'invite de commande?
Vous pouvez utiliser l'emplacement téléchargé TestNg et mentionner org.testng.TestNg.testNgRunner.xml pour exécuter le fichier xml du runner à partir de l'invite de commande.
java -cp "/opt/testng-7.1.jar:bin" org.testng.TestNG testngRunner.xml
Comment intégrer TestNg XML avec Maven?
Vous pouvez intégrer TestNg avec Maven avec l'utilisation du plugin appelé plugin maven-surefire où vous pouvez configurer pour exécuter le fichier testNgrunner.xml en utilisant les configurations:
Comment pouvez-vous spécifier le paramètre TestNg Test à l'aide de TestNg et Maven?
Vous pouvez spécifier le paramètre Test à l'aide du plug-in Maven SureFire avec le fichier TestNg.XML de la manière ci-dessous
Questions et réponses d'entrevue Testng || Ensemble 2
Qu'entend-on par invocationCount dans TestNG?
invocationCount est un attribut d'annotation de test par lequel vous pouvez définir le nombre d'itérations que la méthode de test sera exécutée en une seule exécution.
Le test ci-dessus s'exécutera deux fois car invocationCount est mentionné comme 2.
@Test(invocationCount = 2) public void testOfInvCount() { System.out.println("Invocation count test in progress"); }
Que sont les auditeurs dans TestNG?
dans TestNg, les écouteurs sont essentiellement une interface en Java que vous devez implémenter dans votre classe. La classe implémentée continuera à écouter certains événements et exécute le bloc de code spécifique associé à cet événement Ici, lorsque vous implémentez l'interface, vous implémentez finalement les méthodes non implémentées et ces blocs de code ou les méthodes seront exécutés au fur et à mesure de l'événement spécifique se déclenche.
Avec l'aide des écouteurs TestNG, nous pouvons effectuer de nombreuses actions d'exécution en écoutant un événement différent déclenché par l'exécution du script de test et leur statut, ou nous pouvons faire des rapports. En outre, nous pouvons modifier l'implémentation de l'annotation TestNg.
Mentionner les différences entre les annotations @Factory et @Dataprovider dans TestNg?
@Dataprovider : lorsque vous souhaitez exécuter le même test, mais avec différents ensembles de données à chaque exécution, vous pouvez utiliser l'annotation dataprovider, ce qui vous permet d'obtenir l'approche de test basée sur les données. Ici, l'exécution de la méthode de test s'effectue en utilisant la même instance de classe à laquelle appartient la méthode de test.
@Factory: Ceci sera exécuté toutes les méthodes de test présentes dans une classe de test en utilisant des instances séparées et multiples de la classe.
Comment utiliser TestNG Reporter Class pour la génération de journaux?
Vous pouvez enregistrer les détails et les données à l'aide de la classe Reporter, et ces journaux seront capturés par le rapport généré par TestNG
Reporter.log («Message de journalisation»);
Comment gérer les exceptions dans TestNG?
Vous pouvez mentionner le type d'exception attendue dans un attribut appelé expectedExceptions avec l'annotation @test; dans ce cas, TestNg marquerait le test comme réussi.
@Test (expectedExceptions = numberFormatException.class)
Comment réaliser l'injection de dépendances via TestNg XML?
TestNG nous permet d'injecter des dépendances entre différents groupes de tests via le fichier XML TestNG. Grâce à quoi nous pouvons avoir la dépendance d'un groupe à un autre.
Quelles sont les différentes approches d'assertion pour TestNG?
Nous pouvons utiliser deux types d'assertions avec TestNg.
Assertions douces
Assertions difficiles
Mentionnez certaines des assertions couramment utilisées avec TestNG
Certaines des méthodes d'assertion largement utilisées dans TestNG:
- assertEquals (booléen réel, booléen attendu)
- assertEqual (chaîne réelle, chaîne attendue)
- assertEqual (résultat réel de chaîne, résultat attendu de chaîne, message de chaîne)
- assertTrue (condition)
- assertFalse (condition)
- assertFalse (condition, message)
- assertTrue (condition, message)
Que comprenez-vous par les affirmations dans TestNG?
Une assertion est effectuée pour valider les résultats de test réels par rapport aux résultats de test attendus. Dans TestNg, nous pouvons utiliser l'affirmation dure ou l'affirmation douce.
Différence entre l'affirmation ferme et l'assertion souple dans TestNg
Lorsque vous travaillez avec l'assertion matérielle, si nous obtenons un échec dans la condition d'assertion, les étapes de test suivantes ne seront pas exécutées et seront abandonnées, et finalement le test sera marqué comme un cas de test ayant échoué.
Alors que, d'autre part, l'assertion souple prend en compte la validation de tous les points d'assertion, même s'il y a des échecs dans l'une des assertions. Cela signifie que l'exécution du test n'est pas abandonnée même si une assertion échoue.
Comment écrire une assertion souple dans TestNg
Le morceau de code ci-dessous donne l'approche de l'écriture de l'assertion souple dans TestNG
@Test public void assertion() { SoftAssert softAssertion = new SoftAssert(); //Assertion 1 softAssertion.assertEquals("exp", "act"); //Assertion 2 softAssertion.assertEquals(123, 123); //Assertion 3 softAssertion.assertEquals("Valeur réelle", "valeur attendue"); // A la fin en considérant toutes les valeurs d'assertion softAssertion.assertAll(); }
Comment utiliser l'expression régulière dans les groupes TestNG?
Une expression régulière peut être utilisée dans TestNG pour exécuter les groupes qui ont un modèle similaire dans leur dénomination.
Par exemple, si vous souhaitez exécuter tous les groupes commençant par «testX» selon le nom concerné, vous pouvez utiliser l'expression régulière comme testX. * Dans le fichier XML TestNG.
Questions et réponses d'entrevue Testng || Ensemble 3
Qu'est-ce que TestNG?
TestNg représente essentiellement "Tester la prochaine génération»Est un cadre de test unitaire qui contrôle le flux et l'ordre des scripts d'automatisation et d'automatisation des tests en fournissant diverses annotations avec leurs fonctionnalités.
Quels sont les avantages de TestNg?
- Grâce aux diverses annotations de Testng, vous pouvez contrôler le flux et l'ordre de l'automatisation et de l'exécution des tests dans une meilleure approche.
- L'exécution parallèle de classes de test ou de méthodes de script de test peut être réalisée avec TestNg.
- TestNg peut être facilement intégré à différents outils de construction tels que Maven, Gradle. En outre, il peut être intégré à des outils CICD tels que Jenkins.
- TestNG fournit des fonctionnalités de rapport HTML détaillées et s'intègre facilement à d'autres plates-formes de rapport de test telles que Allure, Rapport d'étendue avec les fonctionnalités des auditeurs TestNG.
- Tous les tests peuvent être déclenchés par le fichier testng.xml où vous pouvez mentionner le nom de la classe de test/test/package de test à exécuter.
- Les tests pilotés par les données peuvent être effectués avec l'annotation TestNg DataProvider. En outre, les tests de paramétrage peuvent également être effectués via Testng.xml, par exemple lors de l'exécution de tests inter-navigateurs, vous pouvez paramétrer les différents navigateurs pour différents tests. Cette fonctionnalité aide à créer le Data Driven Framework avec TestNG.
- TestNg Fournit un moyen d'inclure/exclure un ensemble de tests de tesngNg.xml avec les attributs d'inclusion et d'exclusion.
- Avec TestNg, vous pouvez regrouper vos tests et l'injection de dépendances entre les tests.
- TestNg fournit de nombreux écouteurs avec ceux que vous pouvez réaliser beaucoup de choses comme vous pouvez faire des rapports personnalisés (IReporter), l'intégration avec différents outils (ITestListener), modifier le comportement de l'annotation TestNG Test en cours d'exécution avec IAnnotationTransformer et bien d'autres.
- Vous pouvez ignorer le test spécifique, hiérarchiser votre commande de test, créer un test limité dans le temps avec les annotations TestNg Test.
- Vous pouvez utiliser Hard Assertion ainsi que Soft Assertion avec TestNg pour écrire l'instruction Assert.
- TestNg génère TestNG-failed.xml après chaque exécution de test, vous pouvez donc utiliser le même TestNG-failed.xml généré pour réexécuter vos scripts de test ayant échoué.
- TestNg fournit diverses annotations de test telles que @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest.@AvantSuite,@AprèsSuite.
- Vous pouvez exécuter l'exception attendue Test avec TestNg.
- Vous pouvez réexécuter le test ayant échoué avec IretryAnalyzer de Testng
Comment tu déclencher et exécuter le script de test TestNg?
Vous pouvez exécuter le script TestNg Test de plusieurs manières:
- Faites un clic droit sur la classe de test et "exécuter en tant que" et sélectionnez l'option "Test TestNg".
- Créez testng.xml et directement sur le fichier et exécutez le fichier xml.
- Si vous intégrez testNg.xml à l'outil de génération tel que Maven/Gradle, vous pouvez également exécuter à partir de maven ou de Gradle.
- Si l'outil de construction tel que Maven/Gradle est intégré à CICD, vous pouvez exécuter à partir de CICD, c'est-à-dire à partir de Jenkins.
Indiquez les annotations Testng disponibles?
Les annotations de test Testng les plus utilisées sont:
- @AvantSuite
- @AprèsSuite
- @AvantTest
- @AprèsTest
- @Avant les cours
- @Après les cours
- @AvantMéthode
- @AprèsMéthode
- @AvantGroupes
- @AfterGroups
- @Tester
Mentionner la séquence d'exécution des annotations TestNg?
Du point de vue de l'exécution du test, voici la séquence ci-dessous pour toutes les annotations TestNg disponibles:
Annotations de précondition:
- @AvantSuite
- @AvantTest
- @Avant les cours
- @AvantMéthode
- Annotations de test:
- @Tester
- Annotations PostCondition:
- @AprèsSuite
- @AprèsTest
- @Après les cours
- @AprèsMéthode
Comment désactiver l'exécution de test pour un script de test?
Vous pouvez utiliser l'attribut enabled est égal à false dans l'attribut d'annotation @Test comme mentionné ci-dessous:
@Test(enabled = false) public void logout(){ System.out.println("Sample Test"); }
Comment pouvez-vous spécifier des écouteurs dans TestNG xml?
Vous pouvez utiliser le fichier xml Tesng pour mentionner les écouteurs à utiliser dans le cadre des exécutions de script de test, dans l'approche ci-dessous:
...
Quel est le test de délai d'attente dans TestNg?
Dans ce cas, le «test de délai d'attente» signifie que si, au cas où le script de test prend plus de temps que la période spécifiée pour s'exécuter, testng abandonnera le test et marquera comme un test ayant échoué.
@Test(timeOut = 6000) // cette fois en plusieurs secondes public void testShouldPass() lance InterruptedException { Thread.sleep(2000); }
Comment réaliser le test d'exception attendu avec TestNG?
Si une méthode de test lève une exception, qui est la même que celle spécifiée dans le cadre de l'attribut expectExceptions d'annotation de test, alors TestNg marquera le test comme réussi.
@Test(expectedExceptions = ArithmeticException.class) public void TestDivision() { int i = 1 / 0; }
La méthode de test ci-dessus sera transmise lorsqu'elle lève l'exception attendue par TestNG.
Quelle est la différence entre les annotations @BeforeTest et @BeforeMethod ?
@BeforeTest est exécuté une fois avant chacun des tests marque mentionné dans le fichier testng.xml
@BeforeMethod est exécuté avant chaque méthode de script de test.
Quel est l'avantage d'utiliser le fichier testng.xml?
Avec le fichier testng.xml, vous pouvez contrôler le flux d'exécution avec une seule suite de tests ou plusieurs suites de tests dans un seul fichier xml testng. Certaines des caractéristiques importantes sont:
- Le fichier testng.xml nous permet d'exclure et d'inclure des méthodes de test et l'exécution de groupes de tests.
- Vous pouvez transmettre des données/paramètres de test via testng.xml.
- Vous pouvez ajouter une dépendance entre les méthodes de test et également un groupe de méthodes de test
- Vous pouvez hiérarchiser les cas de test.
- L'exécution de test parallèle des cas de test est réalisée.
- Vous pouvez implémenter différents écouteurs testng et les utiliser en mentionnant ceux-ci dans testng.xml.
- Si vous exécutez votre suite avec testng.xml, vous n'échouerez au test que pour la prochaine itération en utilisant TestNG-failed.xml est généré après chaque exécution.
- Vous pouvez exécuter des groupes de tests spécifiques à l'aide de balise de TestNG xml.
Combien de types de dépendances pouvez-vous atteindre en utilisant TestNG?
Il existe deux types de dépendances que nous pouvons réaliser avec TestNG:
A. DependsOnMethods:
En utilisant cet attribut dependOnMethods, vous définissez quelle méthode de test dépendra d'autres méthodes de test, donc si la méthode dépendante échoue ou n'est pas exécutée, la méthode de test dépendante ne s'exécutera pas non plus.
@Test public void loginUserProfile() { System.out.println("Connexion utilisateur "); } @Test(dependsOnMethods = "loginUserProfile") public void logOutPage_user() { System.out.println("Page de déconnexion pour l'utilisateur"); }
Voici la méthode de test logOutPage_user qui s'exécutera après l'exécution réussie du test loginUserProfile.
B. dependOnGroups:
Dans ce type de dépendance de test, cela nous permet de mettre l'injection de dépendance pour les méthodes de test avec un groupe de méthodes de test.
Le flux d'exécution se déroule de telle manière que le testGroup est d'abord déclenché et exécuté, puis la méthode de test dépendante est déclenchée, et une fois après la réussite du test de groupe, la méthode de test dépendante sera exécutée.
@Test(groups="AtestGroupName") public void testcaseOne() { System.out.println("testcaseOne in process"); } @Test(groups="AtestGroupName") public void testcaseTwo() { System.out.println("testcaseTwo in process"); } @Test(dependsOnGroups="AtestGroupName") public void testcaseThree() { System.out.println("testcaseThree in process"); }
Conclusion: Avec cela, nous concluons la liste de tous les critiques et importants Questions et réponses d'entrevue TestNg , pour mieux maîtriser TestNg, vous pouvez passer par documentation exhaustive sur TestNg.
Pour en savoir plus sur la tutoriel exhaustif sur Selenium que vous pouvez visiter ici.