Cypress 我不知道';I don’我不想一次又一次地编写登录和注销代码,是否可以在一个地方编写代码并在我的整个测试中调用那个地方?

Cypress 我不知道';I don’我不想一次又一次地编写登录和注销代码,是否可以在一个地方编写代码并在我的整个测试中调用那个地方?,cypress,Cypress,我必须一次又一次地写这4个it,因为我想在测试中多次登录和注销。 但问题是我必须一次又一次地编写此代码,如何将此代码嵌入到函数中,并调用该函数来优化代码?您可以在cypress/support/index.js中定义自定义的“helper”函数 在您的情况下,它将是以下代码: Cypress.Commands.add(“it1”,=>{ cy.visit('localhost:4280/auth/login'); }); Cypress.Commands.add(“it2”,=>{ cy.get

我必须一次又一次地写这4个it,因为我想在测试中多次登录和注销。
但问题是我必须一次又一次地编写此代码,如何将此代码嵌入到函数中,并调用该函数来优化代码?

您可以在
cypress/support/index.js中定义自定义的“helper”函数

在您的情况下,它将是以下代码:

Cypress.Commands.add(“it1”,=>{
cy.visit('localhost:4280/auth/login');
});
Cypress.Commands.add(“it2”,=>{
cy.get(“input[id=“username”]”).clear().type(“admin”);
cy.get(story47Obj.btnloginsubit).click();
cy.get(“input[id=“password”]”).clear().type(“admin”);
cy.get(“按钮[id=“提交”]”)。单击();
});
Cypress.Commands.add(“it3”,=>{
cy.url({timeout:5000})。应该('include','/dashboard'))
});
Cypress.Commands.add(“it4”,=>{
cy.get(“button[id=“logout”]”)。应('be.visible')。单击();
});
然后可以调用以下方法:

cy.it1();
cy.it2();
cy.it3();
cy.it4();

登录方法注意事项: 一般来说,最好以编程方式登录,而不是单击按钮。考虑从CyPress直接发送登录请求,而不是总是点击按钮登录。
describe('Cypress Test', () => {
    before(async () => {});

    // it 1
    it('Navigating to login screen', () => {
        cy.visit('localhost:4280/auth/login');
    });

    // it 2
    it('should accept registered credentials', () => {
        cy.get("input[id="username"]").clear().type("admin");
        cy.get(story47Obj.btnLoginSubmit).click();
        cy.get("input[id="password"]").clear().type("admin");
        cy.get("button[id="submit"]").click();
    });

    // it 3
    it('URL must include dashboard', () => {
    cy.url({timeout: 5000}).should('include', '/dashboard')
    });

    // it 4
    it('Test: should logout it', () => {
    cy.get("button[id="logout"]").should('be.visible').click();
    });
});