gpt4 book ai didi

Cypress - 在一个测试中创建动态电子邮件,如何将其传播到所有其他单独的测试?

转载 作者:行者123 更新时间:2023-12-04 21:04:07 29 4
gpt4 key购买 nike

我正在 cypress 中创建一些集成测试。

我目前正在办理注册手续。 - 这是一个文件测试。

注册规范.js

现在,我想运行 login.spec.js 测试。我如何使用在 registration.spec.js 中创建的动态电子邮件,并且现在在“login.spec.js”中使用该电子邮件?

registration.spec.js
----> create a dynamic email address
----> do some tests
----> end registration test
login.spec.js
---> login with email/pw I created in the registration.spec.js file?

这是如何实现的。 cypress 中是否有 injectGlobal 类型的交易?

另外,如果我将 login.spec.js 作为独立运行,有没有办法使用“提供的”凭据或通过运行所有测试的全局参数保存的凭据?那有意义吗?

我想运行所有测试...
registration.spec.js (create dynamic email/pw)
login.spec.js (use dynamic values from registration process)

or

login.spec.js (standalone, use supplied credentials)

最佳答案

是的,Cypress支持在 UI 中创建和重用操作和状态的能力,例如在测试前注册和登录。

然而,Cypress , 通过 cy.request()允许您比用户更强大地控制浏览器的状态,使您的测试更简单 , 更快 , 更可靠

在下面查看此示例,其中 cy.request用于在您的服务器上创建/读取状态。

commands/index.js :

Cypress.Commands.add('login', (user) => {
cy.request('POST', `${apiUrl}/users/login`, user)
})

Cypress.Commands.add("register", (user) => {
cy.request('POST', `${apiUrl}/users/register`, user)
})

Cypress.Commands.add('getUser', (username) => {
return cy.request('GET', `${apiUrl}/users/${username}`)
})

register.spec.js :

it ('can register', () => {
const user = {
name: 'jake',
email: 'jake@jake.com',
password: '12345'
}

cy.visit('/register')
cy.get('input[name="name"]').type(user.name)
cy.get('input[name="email"]').type(user.email)
cy.get('input[name="password"]').type(user.password)
cy.get('input[name="password-confirm"]').type(user.password)
cy.get('input[type="submit"]').click()

// ensure register page sends you /home after register
cy.url().should('contain', '/home')

// expect user from server to match user from test
cy.getUser(user.name)
.then((dbUser) => expect(dbUser).to.deep.eql(user))
})

login.spec.js :

it('can log in', () => {
const user = {
name: 'jane',
email: 'jane@jane.com',
password: '12345'
}

// register w/out UI
cy.register(user)

cy.visit('/login')
cy.get('input[name="name"]').type(user.name)
cy.get('input[name="password"]').type(user.password)
cy.get('input[type="submit"]').click()

// ensure the login page sends you home after login
cy.url().should('contain', '/home')
})

userSettings.spec.js :

it('can change email', () => {
const user = {
name: 'jane',
email: 'jane@jane.com',
password: '12345'
}

// register and login w/o UI
cy.register(user)
cy.login(user)

cy.visit('/settings')
cy.get('input[name="email"]').type('UpdatedEmail@jane.com')
cy.get('input[type="submit"]').click()

cy.getUser(user.name)
.then((dbUser) => expect(dbUser.email).to.eql('UpdatedEmail@jane.com'))
})

关于Cypress - 在一个测试中创建动态电子邮件,如何将其传播到所有其他单独的测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50918134/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com