web-dev-qa-db-fra.com

Comment réexécuter les scénarios ayant échoué à l'aide de Cucumber?

J'utilise le concombre pour mes tests. Comment puis-je réexécuter uniquement les tests ayant échoué?

42
Kalyan

Exécuter Cucumber avec le formateur de réexécution:

cucumber -f rerun --out rerun.txt

Il va générer les emplacements de tous les scénarios ayant échoué dans ce fichier.

Ensuite, vous pouvez les réexécuter en utilisant

cucumber @rerun.txt
57
Andrei Botalov

Voici ma solution simple et soignée.

Étape 1 : Écrivez votre fichier Java de concombre comme indiqué ci-dessous avec rerun:target/rerun.txt. Cucumber écrit les numéros de ligne des scénarios ayant échoué dans rerun.txt, comme indiqué ci-dessous. 

features/MyScenaios.feature:25
features/MyScenaios.feature:45

Plus tard, nous pourrons utiliser ce fichier dans Étape 2 . Nommez ce fichier en tant que MyScenarioTests.Java. Ceci est votre fichier principal pour exécuter vos scénarios marqués. Si vos scénarios ont échoué aux tests, MyScenarioTests.Java les écrira/les marquera rerun.txt dans le répertoire cible.

@RunWith(Cucumber.class)
@CucumberOptions(
    monochrome = true,
    features = "classpath:features",
    plugin = {"pretty", "html:target/cucumber-reports",
              "json:target/cucumber.json",
              "rerun:target/rerun.txt"} //Creates a text file with failed scenarios
              ,tags = "@mytag"
           )
public class MyScenarioTests   {

}

Étape 2: Créez un autre fichier de scénario comme indiqué ci-dessous. Disons ceci en tant que FailedScenarios.Java. Chaque fois que vous remarquez un scénario ayant échoué, exécutez ce fichier. Ce fichier utilisera target/rerun.txt comme entrée pour l'exécution des scénarios.

@RunWith(Cucumber.class)
@CucumberOptions(
    monochrome = true,
    features = "@target/rerun.txt", //Cucumber picks the failed scenarios from this file 
    format = {"pretty", "html:target/site/cucumber-pretty",
            "json:target/cucumber.json"}
  )
public class FailedScenarios {

}

Chaque fois que vous remarquez un scénario ayant échoué, exécutez le fichier dans Étape 2

4
vkrams

Vous devez disposer de la version 1.2.0 au minimum pour utiliser la nouvelle fonctionnalité @ target/rerun.txt. Après cela, il suffit de créer un coureur qui s'exécute à la fin et utilise ce fichier. De plus, si vous utilisez Jenkins, vous pouvez insérer une balise sur les fonctionnalités d’échec aléatoire afin que la construction n’échoue pas à moins d’être exécutée deux fois.

0