Cypress - 跨文件保存价值

问题描述 投票:0回答:1

在我的 Cypress 测试中,我需要跨规范保存和使用一些值,例如,在创建用户时,我需要存储他的 ID 以在其他测试文件中使用。例如我有这些文件:

测试用户.cy.ts:

describe("User Tests", () => {
    before(() => {
        cy.session("userSession", () => {
            cy.login();
        });
    });

    beforeEach(() => {
        // More code...
    });

    it("should add user", () => {});

    it("should remove user", () => {});
});

测试公司.cy.ts:

describe("Company Tests", () => {
    before(() => {
        cy.session("userSession", () => {
            cy.login();
        });
    });

    beforeEach(() => {
        // More code...
    });

    it("should add user", () => {});

    it("should remove user", () => {});
});

在登录中,我使用“Cypress.env”保存用户 ID,如下所示:


const fetchUserCredentials = (): Cypress.Chainable<UserResponse> => {
    return fetchAccessToken().then((access_token) => {
        return cy
            .request({
                method: "POST",
                url: myUrl,
                headers: {
                    // ....
                },
                encoding: "utf8",
                form: true,
            })
            .then((response) => {
                expect(response.status).to.eq(200);
                expect(response.body).to.have.property("email");
                expect(response.body).to.have.property("password");
                expect(response.body).to.have.property("userId");
                Cypress.env("cypress-local-user-id", response.body.userId);
                return cy.wrap(response.body as UserResponse);
            });
    });
};

当我调用登录时它被保存,但在第二次测试中该值为空,我尝试使用cy.task,但它不起作用。

有人可以在这里阐明如何跨规范文件保存值吗?

我尝试了“Cypress.env”和“cy.task”

testing cypress cypress-custom-commands
1个回答
0
投票

要在规范中的所有测试中使用会话登录,请使用

beforeEach
而不是
before

要在运行中的所有规范中使用相同的,请将代码移至全局支持文件(打字稿的默认名称为

cypress/suport/e2e.ts
)。

请参阅编写和组织测试

beforeEach(() => {
  cy.log('I run before every test in every spec file!!!!!!')
})

此文件在每个规范文件之前运行。

© www.soinside.com 2019 - 2024. All rights reserved.