在我的 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”
要在规范中的所有测试中使用会话登录,请使用
beforeEach
而不是 before
。
要在运行中的所有规范中使用相同的,请将代码移至全局支持文件(打字稿的默认名称为
cypress/suport/e2e.ts
)。
请参阅编写和组织测试
beforeEach(() => {
cy.log('I run before every test in every spec file!!!!!!')
})
此文件在每个规范文件之前运行。