我是柏树的新手。可以说我有以下结构。每个都应在真空中运行,但它们都需要登录。我可以创建一个用于登录的“命令”。但是可以说我有一个测试,ala login.spec.js
它所做的就是登录用户并重定向。很好。
但是,在那之后,各种开发人员将希望在特定领域下运行自己的测试。但是他们所有人都需要登录,因此不必总是创建相同的测试。.是否可以“共享”测试,然后继续进行他们感兴趣的测试?
例如:**文件夹名称**
**Integration**
login.spec.js
**CreateProduct**
index.spec.js
**PurchaseProduct** // <-- I want to run this, BUT with login.spec.js too as a before hook.
index.spec.js
etc...
现在,我只想在PurchaseProduct文件夹中运行测试,但是首先需要“登录”它们,所以,我想调用login.spec.js ...如何在整个测试环境中使用那些想要借用的人吗?
答案 0 :(得分:2)
是的,.datesUntil
支持在UI中创建和重用动作和状态的功能,例如在测试前注册和登录。
然而,Cypress
到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
答案 1 :(得分:1)
您了解可以创建一个登录命令。那么有什么理由不这样做吗?
如果您还没有这样做,我建议观看one of the official doc pages中引用的赛普拉斯创始人Brian Mann的演讲。请在下面找到与您的问题有关的两部分。
3 strategies to test the login page (8:40)
(9分钟后),我们不必,或者您永远,也可以使用用户界面来 建立状态