如何使用Cypress在每次注册时生成新的电子邮件



这是我的电子邮件字段的HTML

<input type="text" name="email" class="form-control" value="">

我该如何编写柏树命令,以便每次都用+号生成一个新的电子邮件id。例如-父电子邮件地址是test@gmail.com.应测试后续电子邮件地址+a1@gmail.com,测试+a2@gmail.com

您可以使用带有静态方法的Javascript类来跟踪所使用的数字。

因为静态属性在类定义中,所以Cypress不会在测试之间清除它。

也可以将其移动到/support/index.js,并创建一个自定义命令以在多个等级库文件中使用。

class EmailGenerator {
static id = 1;
static generate(baseEmail) {
const uniqueId = `+a${this.id++}`;  
return baseEmail.replace('@', `${uniqueId}@`); 
}
}
Cypress.Commands.add('generateEmail', (baseEmail) => {
return EmailGenerator.generate(baseEmail)
})
it('generates a unique email', () => {
console.log(EmailGenerator.generate('test@gmail.com'))    // test+a1@gmail.com
})
it('generates a second unique email', () => {
console.log(EmailGenerator.generate('test@gmail.com'))    // test+a2@gmail.com
})
it('generates a third unique email via a custom command (across all specs)', () => {
cy.generateEmail('test@gmail.com')
.then(email => console.log(email));                     // test+a3@gmail.com
})
it('puts unique emails into the input', () => {
cy.get('input[name="email"]')
.type(EmailGenerator.generate('test@gmail.com'))        // test+a4@gmail.com
cy.get('input[name="email"]')
.type(EmailGenerator.generate('test@gmail.com'))        // test+a5@gmail.com
})

Faker是一个很好的库,专门用于生成随机数据。对于您的情况,在安装后,您可以使用以下内容:

let email =  `test+` + faker.random.uuid() + '@domain.com'

另一种变体-使用JS,并且您只能将变量存储在柏树代码中的数组和对象中:

let numberOfEmails = {counter: 0}
function generateEmail(numberOfEmails){
numberOfEmail.counter++
return `test+a${numberOfEmail.counter}@gmail.com`
}

Fakerjs很好,但当你生成新的电子邮件时,你不会收到它们,因为你没有域名。

我看到了一个很好的工具,它既可以随机化电子邮件地址,也可以打开电子邮件和测试电子邮件。

它基本上是一个记录器,您根本不必编写Cypress脚本。

https://cypress.preflight.com/

相关内容

最新更新