2017-10-04 6 views
0

Quelle est la bonne façon de gérer toute forme d'erreur/erreur d'assertion, de sorte que lorsqu'un test échoue, le test suivant soit exécuté? ou est-ce mieux pour moi de n'avoir qu'un seul test dans un fichier JavaScript?Bonne façon de gérer les erreurs d'assertion afin que le test suivant puisse être exécuté

describe('SMP Service Login Page', function() { 
    describe('Loggin in', function() { 
     // Unhappy flow always first 
     var assert = require('assert'); 
     var useridField; 
     var passwordField; 
     var loginButton; 
     it('should not allow user to login with wrong userid', function(done) { 
      throw new Error("haha"); 

     });   
     it('should fail because of assertion', function(done) {    
      useridField = browser.element('android=new UiSelector().text("User Name").className("android.widget.EditText")');     
      useridField.setValue('FIRST'); 
      console.log(useridField); 

      passwordField = browser.element('android=new UiSelector().className("android.widget.EditText").instance(1)');     
      passwordField.setValue('FIRST'); 

      loginButton = browser.element('android=new UiSelector().resourceId("android:id/button1")'); 
      var text = loginButton.getText(); //text = 'LOG IN'    
      assert.equal(text,'LOG'); //this should fail , throws an error  
      loginButton.click(done); 
     }); 
//this test doesn't get run cause of assertion error thrown 

     it('should pass but it fails because it could not locate the useridField', function(done) {    
      console.log(useridField); 
      useridField.setValue('userid'); 

      passwordField = browser.element('android=new UiSelector().className("android.widget.EditText").instance(1)');    
      passwordField.setValue('passsword'); 

      loginButton = browser.element('android=new UiSelector().resourceId("android:id/button1")');    
      loginButton.click(done);   
     }); 
    }); 
}); 

Répondre

2

La meilleure façon est d'écrire vos tests pour qu'ils soient indépendants les uns des autres. Dans le code que vous montrez votre dernier test ne devrait pas dépendre du test précédent pour définir useridField. Vous pouvez déplacer le code qui l'initialise dans un crochet beforeEach.

+0

yeap. J'ai réalisé des assertions que l'échec jettera. Il est impossible que les coureurs actuels signalent l'erreur et poursuivent le test. – user1166085