首页 > 解决方案 > 是否可以在不同的步骤文件中保留与 BDD 相同的会话 ID

问题描述

我想用 Cypress 实现 BDD,并希望在不同的步骤文件中保留相同的会话 ID。

所以我对不同的功能文件有不同的步骤文件。

我的功能文件看起来像

1.Login-登录到应用程序

2.添加员工-登录后添加员工。

我想在功能文件的步骤定义中使用相同的登录凭据。

但问题是 cypress 在不同的测试中清除了所有 cookie。

那么如何实现这种依赖。

标签: cucumberbddcypress

解决方案


有一个赛普拉斯插件cypress-localstorage-commands可以用来保存变量的值,然后可以跨测试使用。你可以像这样使用它:

let SESSION_ID = '';
before(() => {
        cy.setLocalStorage('sessionId', '000'); // capture the id for example
        cy.saveLocalStorage()
});

beforeEach(() => {
        cy.restoreLocalStorage();
        cy.getLocalStorage('sessionId').as('id'); 
        SESSION_ID = id;
});

it('test 1', () => {
 cy.get(SESSION_ID).should('eq', '000');
});

it('test 2', () => {
 cy.log(SESSION_ID);
});

参考:https ://www.npmjs.com/package/cypress-localstorage-commands

另一种选择可能是使用夹具文件和命令将会话idcy.writeFile保存在下,然后在测试下捕获它beforeit


推荐阅读