首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cypress -在一个测试中创建一个动态电子邮件,如何将其传播到所有其他单独的测试中?

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

Stack Overflow用户
提问于 2018-06-18 22:10:43
回答 1查看 3.3K关注 0票数 5

我在用柏树做一些集成测试。

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

registration.spec.js

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

代码语言:javascript
运行
复制
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?

这是如何实现的。柏树有injectGlobal类型的交易吗?

另外,如果我以独立方式运行login.spec.js,那么是否有一种方法可以使用“提供的”凭据或通过全局参数保存的凭据来运行所有测试?这有意义吗?

我要做所有的测试..。

代码语言:javascript
运行
复制
registration.spec.js (create dynamic email/pw)
login.spec.js (use dynamic values from registration process)

or 

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-20 04:24:27

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

然而,通过Cypress,通过cy.request(),您可以比用户更有效地控制浏览器的状态,从而使您的测试更简单--、更快的更可靠的

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

commands/index.js

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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'))
})
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50918134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档