Cypress学习(四)多个tests共享cookies

cypress默认会在每个test开始之前清空cookies,保证每个用例的独立和环境干净。
但是在一个js文件内有多个it用例的时候,就希望只登陆一次,可以保留cookies,后续可以重复使用。
官网上有以下两种方法,官网地址【https://docs.cypress.io/api/cypress-api/cookies.html#Syntax
方法一:
To preserve cookies by its key, use Cypress.Cookies.preserveOnce().

cy.getCookie('fakeCookie').should('not.be.ok')
// preserving a cookie will not clear it when
// the next test starts
cy.setCookie('lastCookie', '789XYZ')
Cypress.Cookies.preserveOnce('lastCookie')

实例:

describe("登陆后访问首页",function() {
        before( () => {
            cy.login("z***","z*****")
        })
        beforeEach(() =>{
            //cypress会在每个test前清空cookie,preserveOnce在多个test之间保留cookie
            Cypress.Cookies.preserveOnce('zentaosid','windowWidth','windowHeight')
        })
        it("访问首页",() =>
        {
            cy.visit("/zentao/my/")
            cy.url().should("include","/zentao/my/")
            cy.title().should("contain","我的地盘")
        })
        it("访问产品页",() =>
        {
            cy.visit("/zentao/product/")
            cy.url().should("include","/zentao/product/")
            cy.title().should("contain","产品")
        })
})

方法二:
To set defaults for all cookies, use Cypress.Cookies.default().

Cypress.Cookies.defaults({
  preserve: 'session_id'    #之前为whitelist白名单,5.0之后改为preserve
})

在cypress/support/index.js设置白名单可替代方法一中beforeEach内容代码,省去每一个test前的操作。
实例:

//from cypress/support/index.js
//在测试用例执行之前加载
Cypress.Cookies.defaults({
    preserve: ['zentaosid','windowWidth','windowHeight']
})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容