cypress测试用例保存和获取变量的设置

我的本意是第一个测试用例生成一个随机的项目id,后面的测试用例访问的url是全局环境变量保存的baseUrl和随机id拼接而成的,找了cypress的两种设计方法:

第一种:

  1. 创建 cypress.env.json 文件把baseUrl和项目id都放里面,项目id给一个默认值
  2. 第一个测试用例生成的项目id使用 Cypress.env(‘projectId’, 随机id) 替换掉cypress .env.json里里面的项目id
  3. 其他测试用例使用Cypress.env(‘projectId’) 的方法获取到项目id和baseUrl,利用 cy.visit(baseUrl+projectId) 访问的新项目的url

但是env有一个致命的限制,她对于环境变量的修改仅限于当前测试用例,也就是一个测试用例对它修改的值在别的用例中是访问不到的,所以这种方式不起作用

第二种:

  1. 第一个测试用例生成的随机id利用 cy.writeFile() 的方式写入到一个json文件中
cy.get('div#task')
      .attribute('project-id')
      .then((res) => {
        // 存入json文件中
        cy.writeFile(
          'cypress/fixtures/test.json',
          { project_id: res },
          { flag: 'w+' }
        );
      });

baseUrl也写在了这个文件里面

  1. 其他的测试用例从这个接送文件中l利用 cy.fixture() 获取baseUrl和projectId。
cy.fixture('test').then((data) => {
      project_id = data.project_id;
      let baseUrl = data.baseUrl
      });`

但是writeFile()方法中有很多flag,常用的就是W+全覆盖,a+追加,使用w+de话,baseUrl就被覆盖掉了,a+的话不会相互覆盖,但键值相同的键值对一直累加,json文件里面存在很多对象,这肯定是报错的

所以最后的解决办法就是两者的结合,将其余的固定环境变量写在cypress.env.json文件中,将随机生成的id单独放在一个json文件中,并且在writeFile方法中配置w+,使每次新生成的id覆盖掉旧的id
在获取baseUrl的时候利用Cypress.env(‘baseUrl’)的方式获取, 获取id的时候利用cy.fixture(’ 文件名’)的方式获取

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值