Cypress和auth应用程序,带有节。你能调用共享测试(即登录)吗?
我对柏树不熟悉。假设我有以下结构。每个都应该在真空中运行,但它们都需要登录。我知道我可以创建一个用于登录的“命令”。但是假设我有一个测试,ala login.spec.js 它所做的只是登录用户并重定向。太好了 但是,在那之后,不同的开发人员会希望在特定的域中运行他们自己的测试。但是他们都需要登录,所以不要总是创建相同的测试。。有没有办法“共享”一个测试,然后继续进行他们感兴趣的测试 例如:**文件夹名称**Cypress和auth应用程序,带有节。你能调用共享测试(即登录)吗?,cypress,Cypress,我对柏树不熟悉。假设我有以下结构。每个都应该在真空中运行,但它们都需要登录。我知道我可以创建一个用于登录的“命令”。但是假设我有一个测试,ala login.spec.js 它所做的只是登录用户并重定向。太好了 但是,在那之后,不同的开发人员会希望在特定的域中运行他们自己的测试。但是他们都需要登录,所以不要总是创建相同的测试。。有没有办法“共享”一个测试,然后继续进行他们感兴趣的测试 例如:**文件夹名称** **Integration** login.spec.js **CreateP
**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...
**集成**
login.spec.js
**创造产品**
index.spec.js
**PurchaseProduct**/您知道可以创建登录命令。有什么理由不这样做吗
如果您还没有,我建议您观看Cypress的创始人Brian Mann在上引用的演示。请找到下面两个与您的问题相关的部分
- 存根请求实际上不进行身份验证
- 或数据库中的静态用户
- 或由测试创建的动态用户
(9分钟后)我们不必使用,您也不应该使用UI来
建立状态
您知道您可以为登录创建一个命令。有什么理由不这样做吗
如果您还没有,我建议您观看Cypress的创始人Brian Mann在上引用的演示。请找到下面两个与您的问题相关的部分
- 存根请求实际上不进行身份验证
- 或数据库中的静态用户
- 或由测试创建的动态用户
(9分钟后)我们不必使用,您也不应该使用UI来
建立状态
是的,Cypress
支持在UI中创建和重用操作和状态,例如在测试前注册和登录
但是,Cypress
,通过cy.request()
可以比用户更有效地控制浏览器的状态,使测试更简单、更快、更可靠
查看下面的示例,其中cy.request
用于在服务器上创建/读取状态
在命令/index.js
中:
Cypress.Commands.add('login',(用户)=>{
cy.request('POST',`${apirl}/users/login',user)
})
Cypress.Commands.add(“寄存器”,(用户)=>{
cy.request('POST',`${apirl}/users/register',user)
})
Cypress.Commands.add('getUser',(用户名)=>{
返回cy.request('GET',`${apirl}/users/${username}`)
})
在register.spec.js
中:
it('可以注册',()=>{
常量用户={
名字:“杰克”,
电邮:'jake@jake.com',
密码:“12345”
}
cy.visit(“/register”)
cy.get('input[name=“name”]”)。类型(user.name)
cy.get('input[name=“email”]”)。键入(user.email)
cy.get('input[name=“password”]”)。键入(user.password)
cy.get('input[name=“password confirm”]”)。键入(user.password)
cy.get('input[type=“submit”]”)。单击()
//确保注册页面在注册后发送给您/主页
cy.url()应该('contain','/home'))
//期望来自服务器的用户与来自测试的用户匹配
cy.getUser(user.name)
.then((dbUser)=>expect(dbUser).to.deep.eql(user))
})
在login.spec.js
中:
it('可以登录',()=>{
常量用户={
姓名:'简',
电邮:'jane@jane.com',
密码:“12345”
}
//带输出用户界面的寄存器
cy.register(用户)
cy.visit(“/login”)
cy.get('input[name=“name”]”)。类型(user.name)
cy.get('input[name=“password”]”)。键入(user.password)
cy.get('input[type=“submit”]”)。单击()
//确保登录页面在登录后将您发送回家
cy.url()应该('contain','/home'))
})
在userSettings.spec.js
中:
it('可以更改电子邮件',()=>{
常量用户={
姓名:'简',
电邮:'jane@jane.com',
密码:“12345”
}
//不带用户界面注册和登录
cy.register(用户)
cy.login(用户)
cy.visit(“/settings”)
cy.get('input[name=“email”]”)。键入('UpdatedEmail@jane.com')
cy.get('input[type=“submit”]”)。单击()
cy.getUser(user.name)
.then((dbUser)=>expect(dbUser.email).to.eql('UpdatedEmail@jane.com'))
})
是,Cypress
支持在UI中创建和重用操作和状态,例如在测试前注册和登录
但是,Cypress
,通过cy.request()
可以比用户更有效地控制浏览器的状态,使测试更简单、更快、更可靠
查看下面的示例,其中cy.request
用于在服务器上创建/读取状态
在命令/index.js
中:
Cypress.Commands.add('login',(用户)=>{
cy.request('POST',`${apirl}/users/login',user)
})
Cypress.Commands.add(“寄存器”,(用户)=>{
cy.request('POST',`${apirl}/users/register',user)
})
Cypress.Commands.add('getUser',(用户名)=>{
返回cy.request('GET',`${apirl}/users/${username}`)
})
在register.spec.js
中:
it('可以注册',()=>{
常量用户={
名字:“杰克”,
电邮:'jake@jake.com',
密码:“12345”
}
cy.visit(“/register”)
cy.get('input[name=“name”]”)。类型(user.name)
cy.get('input[name=“email”]”)。键入(user.email)
cy.get('input[name=“password”]”)。键入(user.password)
cy.get('input[name=“password confirm”]”)。键入(user.password)
cy.get('input[type=“submit”]”)。单击()
//确保注册页面在注册后发送给您/主页
cy.url()应该('contain','/home'))
//花费