我如何在赛普拉斯中检查电子邮件验证

How can I check email validation in cypress

我想检查输入元素的验证。我可以检查输入的电子邮件格式是否错误或有效吗? 像这样。

 cy.get('#email_signup').type(validateEmail())
         var email = "";
            var possible = "abcd@.gh";
            for (var i = 0; i < 10; i++)
            email += possible.charAt(Math.floor(Math.random() * possible.length));
            return email;
        }

        cy.get('.nextBtn').click();
        cy.get('.error-message').should('be.visible');

根据您的预期,您需要两个外部函数来创建电子邮件和获取电子邮件的有效状态。然后您需要在所有电子邮件中循环 it 挂钩。

//Create Emails
//Did a small modification so that you can decied the email length you need
const emails = (val) => {
var email = "";
var possible = "abcd@.gh";
for (var i = 0; i < val; i++){
email += possible.charAt(Math.floor(Math.random() * possible.length));}
return email;
}


//validate emails
//I have used a general Regex here, use the regex you have used in your website insted

const validateEmail = (email) => {
var re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
return re.test(email);
}

//Test Cases (I have added 10 loops so it will create 10 test cases)
//Change the test case count as much as you need
for (let index = 0; index < 10; index++) {
const TestEmail = emails(10)
const EmailState = validateEmail(TestEmail)
it("EmailTest -"+ TestEmail +" - " + EmailState,() => {
cy.get('#email_signup').type(TestEmail)
cy.get('.nextBtn').click();
    if(!EmailState){
         cy.get('.error-message').should('be.visible');
    }else{
         cy.get('.error-message').should('not.be.visible');
    }
})
}

您创建电子邮件的方法很棒。但请确保您添加了一个单独的测试来检查特定和有效的场景,因为随机电子邮件可能无法涵盖所有​​场景

这就是测试的样子。

注意:正如我之前提到的。了解您的测试数据总是更好。所以没有随机生成。尝试列出具有真假条件的有效、无效电子邮件场景并循环遍历它们。

首先,生成随机电子邮件很好,但最好的方法是将一组电子邮件放在一个数组中。 (可能在 JSON 中)并遍历它们并检查电子邮件有效性。

例如:

{
"Email_1":"['robot@mail.com','valid']",
"Email_2":"['robotmail.com','InValid']",
}

因为这样您就知道您正在测试的电子邮件条件。但是,如果您想使用随机电子邮件生成方法。我完全同意 Muditha Perera 的回答。它完美运行。