【问题标题】:Proper way to handle Assertion error so that subsequent test can run处理断言错误的正确方法,以便后续测试可以运行
【发布时间】:2023-03-06 07:03:01
【问题描述】:

处理任何形式的错误/断言错误的正确方法是什么,以便当一个测试用例失败时,后续测试仍然可以运行?还是在 1 个 JavaScript 文件中有 1 个测试用例对我来说更好?

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);        
        });
    });
});

【问题讨论】:

    标签: javascript node.js mocha.js chai assertions


    【解决方案1】:

    最好的方法是将测试编写为彼此独立。在代码中,您显示的最后一个测试不应依赖于之前的测试来设置useridField。您可以将初始化它的代码移动到 beforeEach 挂钩中。

    【讨论】:

    • 是的。我意识到失败的断言会抛出。当前的测试运行者无法报告错误并继续测试。
    猜你喜欢
    • 1970-01-01
    • 2020-10-25
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 2013-08-21
    • 1970-01-01
    相关资源
    最近更新 更多