Existe-t-il un moyen de générer (facilement) un rapport HTML contenant les résultats des tests? J'utilise actuellement JUnit en plus de Selenium pour tester l'interface utilisateur des applications Web.
PS: Compte tenu de la structure du projet, je ne suis pas censé utiliser Ant :(
Si vous pouviez utiliser Ant alors vous utiliseriez simplement la tâche JUnitReport comme détaillé ici: http://ant.Apache.org/manual /Tasks/junitreport.html , mais vous avez mentionné dans votre question que vous n'êtes pas censé utiliser Ant. Je crois que cette tâche transforme simplement le rapport XML en HTML, il serait donc possible d'utiliser n'importe quel processeur XSLT pour générer un rapport similaire.
Alternativement, vous pouvez passer à l'utilisation de TestNG ( http://testng.org/doc/index.html ) qui est très similaire à JUnit mais a un rapport HTML par défaut ainsi que plusieurs autres fonctionnalités intéressantes.
Alternativement, pour ceux qui utilisent l'outil de construction Maven, il existe un plugin appelé Surefire Report .
Le rapport ressemble à ceci: exemple
J'ai trouvé les réponses ci-dessus assez utiles mais pas vraiment générales, elles ont toutes besoin d'un autre système de construction majeur comme Ant ou Maven.
Je voulais générer un rapport dans une simple commande à un coup que je pourrais appeler à partir de n'importe quoi (à partir d'une build, d'un test ou simplement de moi-même), j'ai donc créé junit2html qui peut être trouvé ici: https: // github. com/inorton/junit2html
Vous pouvez l'installer en faisant:
pip install junit2html
Vous pouvez facilement le faire via ant. Voici un fichier build.xml pour ce faire
<project name="genTestReport" default="gen" basedir=".">
<description>
Generate the HTML report from JUnit XML files
</description>
<target name="gen">
<property name="genReportDir" location="${basedir}/unitTestReports"/>
<delete dir="${genReportDir}"/>
<mkdir dir="${genReportDir}"/>
<junitreport todir="${basedir}/unitTestReports">
<fileset dir="${basedir}">
<include name="**/TEST-*.xml"/>
</fileset>
<report format="frames" todir="${genReportDir}/html"/>
</junitreport>
</target>
</project>
Cela trouvera des fichiers au format TEST - *. Xml et générera des rapports dans un dossier nommé unitTestReports.
Pour exécuter cela (en supposant que le fichier ci-dessus s'appelle buildTestReports.xml), exécutez la commande suivante dans le terminal:
ant -buildfile buildTestReports.xml
Le format Junit xml est utilisé en dehors de Java/Maven/Ant Word. Jenkins avec http://wiki.jenkins-ci.org/display/JENKINS/xUnit+Plugin est une solution.
Pour la solution unique, j'ai trouvé cet outil qui fait le travail: https://www.npmjs.com/package/junit-viewer
junit-viewer --results=surefire-reports --save=file_location.html
--results=
est un répertoire contenant des fichiers xml (rapports de test)
Plusieurs options sont disponibles pour générer des rapports HTML pour les scripts Selenium WebDriver.
1. Utilisez la classe JUNIT TestWatcher pour créer vos propres rapports HTML Selenium
La classe TestWatcher JUNIT permet de remplacer les méthodes JUNIT failed () et reused () qui sont appelées automatiquement lorsque les tests JUNIT échouent ou réussissent.
La classe TestWatcher JUNIT permet de remplacer les méthodes suivantes:
la méthode failed () est invoquée en cas d'échec d'un test
la méthode finish () est invoquée lorsqu'une méthode de test se termine (qu'elle réussisse ou échoue)
la méthode skipped () est invoquée lorsqu'un test est ignoré en raison d'une hypothèse qui a échoué.
la méthode starting () est invoquée lorsqu'un test est sur le point de démarrer
la méthode reused () est invoquée lorsqu'un test réussit
Voir l'exemple de code ci-dessous pour ce cas:
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class TestClass2 extends WatchManClassConsole {
@Test public void testScript1() {
assertTrue(1 < 2); >
}
@Test public void testScript2() {
assertTrue(1 > 2);
}
@Test public void testScript3() {
assertTrue(1 < 2);
}
@Test public void testScript4() {
assertTrue(1 > 2);
}
}
import org.junit.Rule;
import org.junit.rules.TestRule;
import org.junit.rules.TestWatcher;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
public class WatchManClassConsole {
@Rule public TestRule watchman = new TestWatcher() {
@Override public Statement apply(Statement base, Description description) {
return super.apply(base, description);
}
@Override protected void succeeded(Description description) {
System.out.println(description.getDisplayName() + " " + "success!");
}
@Override protected void failed(Throwable e, Description description) {
System.out.println(description.getDisplayName() + " " + e.getClass().getSimpleName());
}
};
}
2. Utilisez le framework Allure Reporting
Le framework Allure peut vous aider à générer des rapports HTML pour vos projets Selenium WebDriver.
Le cadre de génération de rapports est très flexible et il fonctionne avec de nombreux langages de programmation et cadres de tests unitaires.
Vous pouvez tout lire à ce sujet sur http://allure.qatools.ru/ .
Vous aurez besoin des dépendances et plugins suivants pour être ajoutés à votre fichier pom.xml
Voir plus de détails, y compris des exemples de code sur cet article: http://test-able.blogspot.com/2015/10/create-Selenium-html-reports-with-allure-framework.html
J'ai trouvé xunit-viewer
, qui a déprécié junit-viewer
mentionné par @ daniel-kristof-kiss .
Il est très simple, recueille automatiquement et récursivement tous les fichiers pertinents au format ANT Junit XML et crée un seul fichier html avec filtrage et autres fonctionnalités intéressantes.
Je l'utilise pour télécharger les résultats des tests à partir des versions de Travis car Travis n'a pas d'autre support pour collecter la sortie des résultats de test au format standard.