web-dev-qa-db-fra.com

Comment empêcher le rapporteur d'exécuter d'autres cas de test en cas d'échec?

Existe-t-il un moyen de quitter la suite de tests et de cesser d'exécuter d'autres scénarios de test si un scénario de test échoue dans le rapporteur?

25
Aman Gupta

Dans le cas d'un framework de test jasmine, vous n'êtes pas le premier à le demander.

Il existe des discussions/problèmes ouverts pertinents sur la sortie après un premier échec, --fail-fast option:

Pour faire court, c'est un problème ouvert et un jour jasmine aurait la fonctionnalité intégrée. Actuellement, utilisez un tiers jasmine-bail-fast module.

En plus de cela, il y a un paramètre pratique de jasmin realtimeFailure. Si vous le définissez sur true, cela n'échouerait pas tout le cycle de test, mais il afficherait des erreurs en temps réel - immédiatement après l'événement - cela pourrait éventuellement couvrir votre cas d'utilisation. Réglez-le dans jasmineNodeOpts:

exports.config = {
    seleniumAddress: 'http://127.0.0.1:4444/wd/hub',

    ...

    jasmineNodeOpts: {
        realtimeFailure: true
    }
}
17
alecxe

jasmine-bail-fast n'a pas fonctionné dans mon cas. Je ne sais pas si c'était à cause de certains conflits avec mes autres plugins de rapport.

Au cas où quelqu'un aurait le même problème. Vous pouvez essayer rapporteur-échec rapide

import failFast from 'protractor-fail-fast';

exports.config = {
  // if import statement doesn't work, use this instead of import for older versions of node
  // plugins: [{
  //  package: 'protractor-fail-fast'
  // }],

  onPrepare: function() {
    jasmine.getEnv().addReporter(failFast.init());
  },

  afterLaunch: function() {
    failFast.clean(); 
  }  
}

A parfaitement fonctionné pour moi.

EDIT: ajout d'une instruction d'importation dans l'extrait de code pour refléter le fichier Lisez-moi de projactor-fast-fail

9
Linh Pham

Voici ma solution pour ignorer les tests au premier échec avec Jasmine 2 et Protractor. J'espère que ça aide.

exports.config = {
    onPrepare: function () {
        //skip tests after first fail
        var specs = [];
        var orgSpecFilter = jasmine.getEnv().specFilter;
        jasmine.getEnv().specFilter = function (spec) {
            specs.Push(spec);
            return orgSpecFilter(spec);
        };
        jasmine.getEnv().addReporter(new function () {
            this.specDone = function (result) {
                if (result.failedExpectations.length > 0) {
                    specs.forEach(function (spec) {
                        spec.disable()
                    });
                }
            };
        });
    }
};
9
Daniel Schwab

vous n'avez pas besoin de tous ces plugins tiers. Utilisez natif process.exit().

Exemple de code:

it("test", function()
{
   ...
   if(isExit)
   {
      browser.driver.close().then(function()
      {
         process.exit(1);
      });
   }
});

profit.

4
Andrew Drizgolovich