将Cypress中的测试代码划分为代码块

将Cypress中的测试代码划分为代码块,cypress,Cypress,我们已经编写了cypresstests,现在希望将其划分为代码块。在开始之前,对代码进行划分,所有测试都会相应地运行并通过。但是,由于改为块,我们开始得到关于401身份验证的错误 这是Cypress中代码块的正确语法吗 /*eslint禁用无未定义*/ 描述('登录',()=>{ 它('成功加载',函数(){ cy.visit(“/”) .get('input[type=“email”]”) .type('XXXX') .get('input[type=“password”]”) .type('

我们已经编写了cypresstests,现在希望将其划分为代码块。在开始之前,对代码进行划分,所有测试都会相应地运行并通过。但是,由于改为块,我们开始得到关于401身份验证的错误

这是Cypress中代码块的正确语法吗

/*eslint禁用无未定义*/
描述('登录',()=>{
它('成功加载',函数(){
cy.visit(“/”)
.get('input[type=“email”]”)
.type('XXXX')
.get('input[type=“password”]”)
.type('XXXX')
.get('[style=“text align:center;”]>.ui')。单击()
})
描述('作业页',()=>{
它('Add Assignment',function(){
cy.get('[href=“/assignments”]')。单击()
cy.get('.grey')。单击()
cy.get('.ui>.search').type('Astra Zeneca'))
cy.get(':第n个子(2)>.ui>input').type('System Development'))
cy.get('textarea').type('这是一个短文本')
cy.get(':第n个子(4)>.ui')。单击()
cy.get('a.ui')。单击()
})
})
这完全有道理:)在第二个测试块“分配页面”您没有登录。您应该在每个测试块中使用
beforeach
hook登录。在cypress中,每个测试都在干净的画布上执行,以确保前一个测试中的错误不会导致下一个测试失败。这意味着您必须在每个测试之前登录。这就是为什么您需要
beforeach
hook

此外,这里的最佳实践是以编程方式登录-这意味着不要单击输入字段并键入(cy.type),而是使用
cy.request
发送您的登录请求,并检查其是否在响应中成功

在Beforeach钩子中登录的示例代码:

beforeach(()=>{
赛义德请求({
方法:“张贴”,
url:“”,
正文:{
电邮:,
通过:
},
形式:正确
})。然后(响应=>{
expect(response.status).to.eq(200);
期望(反应、身体、成功)成为真实;
});
};
}

@hereinsweeden太好了!如果答案对您有帮助,您可以通过单击答案左侧的大灰色复选按钮来接受它:)欢迎使用堆栈溢出!