Détecter l'échec du test dans testng @AfterMethod
Je veux prendre une capture d'écran si un test échoue. Plutôt que de l'habillage de toutes les méthodes d'essai avec les blocs try/catch, je voudrais ajouter cette logique de la méthode annotée avec @AfterMethod
.
Comment puis-je détecter dans la méthode annotée avec @AfterMethod
si le test a échoué?
OriginalL'auteur Ingo Kegel | 2013-09-03
Vous devez vous connecter pour publier un commentaire.
Si la méthode annotée avec
@AfterMethod
a unITestResult
paramètre puis TestNG va injecter automatiquement le résultat du test. (source: TestNG documentation, section 5.18.1)Cela devrait faire l'affaire:
OriginalL'auteur JacekM
Une bonne option est d'utiliser une
ITestListener
au lieu de la manipulation de signalement des défaillances dans@AfterMethod
. Le test de l'auditeuronTestFailed()
fonction sera appelée après la méthode de test a été exécuté, mais avant de le@AfterMethod
méthode d'exécution. (Notez qu'il n'est pas unonTestFinished()
fonction de l'auditeur; ce rôle est rempli par les@AfterMethod
.)Pour faciliter les choses sur vous-même, vous pouvez utiliser un
TestListenerAdapter
, qui permettra de mettre en œuvre toutes les autres fonctions que vous n'avez pas spécifiquement@Override
vous-même.Ce que vous finissez avec est:
Vous attachez ensuite le port d'écoute de votre classe de test avec
La
ITestResult
est une référence à votre classe de test de l'objet, de sorte que vous pouvez utiliser la réflexion pour s'emparer des données hors de lui comme une Selenium WebDriver exemple, etc.Vous pouvez avoir autant de différents auditeurs que vous le souhaitez, à faire diverses choses telles que le nettoyage ou préserver les journaux d'erreurs, de prendre des captures d'écran, de déclencher d'autres fonctionnalités de création de rapports, d'envoyer des e-mails, ou tout ce que vous voulez.
OriginalL'auteur thekevinmonster
Variante pour les réponses précédentes:
Puisque vous savez déjà que vous voulez prendre une capture d'écran seulement en cas d'échec, vous pouvez utiliser
onTestFailure()
méthode deTestListenerAdapter
:PS: n'oubliez pas d'ajouter
LFailure
à votre testng.xml ou directement dans le code comme ceci:(de préférence dans une classe de base, à partir de laquelle tous vos tests hériter)
OriginalL'auteur Nathan Ripert
Il serait bon si vous pouvez mettre en œuvre un auditeur IInvokedMethodListener et de mettre en œuvre la
afterInvocation()
méthode. Cela vous donne accès à l'objet résultat de votre méthode. Vous pouvez mettre votre code pour prendre une capture d'écran ici.OriginalL'auteur niharika_neo