cypress - 如何在 Cypress 中使用多个变量?

标签 cypress

tl;dr:cypress 变量是否可以存储在某个可访问的位置(如 this 或类似的东西),或者如果我想访问所有这些变量,我是否必须进入无休止的回调循环一次使用?

长话短说:

我试图用 cypress 测试覆盖的应用程序在许多不同的数据集上运行,因此为了在测试前准备测试数据,我通常会进行一些 API 调用,并且我想使用它们的结果:

示例:

测试应涵盖“删除任务”功能。作为测试数据,我想通过我们的 API 预先创建一个任务。为此,我需要进行以下调用:

  1. 调用“.../users/me”获取我的用户 ID(必需参数之一)
  2. 调用“.../users”获取特定数据集的所有用户列表(第一个 id 用于过滤另一个,然后用于 assigneeId,另一个必需的参数)
  3. 使用先前的 id 作为必需参数调用“.../tasks”

我目前有自定义命令来处理那些特定的 api 调用,同时返回结果。然后我调用这些命令并将它们的返回值保存为 cypress 变量。如果我想进行第三次 api 调用,我必须这样做:

    cy.getUserID().then((userId) => {
      cy.wrap(userId).as('userId')
    })
    cy.getAllUsersForTenant().then((users) => {
      cy.get('@userId').then((userId) => {
        const result = users.find((escalationUserId) => escalationUserId !== userId)
        cy.wrap(result.id).as('assigneeId')
      })
    })


    cy.get('@assigneeId').then((assigneeId) => {
      cy.get('@userId').then((userId) => {
        // do the POST call with both assigneeId and userId available
      })
    })

现在这不是什么大问题,但我可以想象我需要 2 个以上的变量,我是否必须添加更多嵌套回调,或者有没有办法将这些变量存储在一个可访问的位置?

最佳答案

我通过查看其他票证找到了答案 - 如果我使用 function() 而不是箭头函数,则可以共享 this 上下文。

关于cypress - 如何在 Cypress 中使用多个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67505067/

相关文章:

cypress - 我可以使用 cy.session() 而不调用 cy.visit() 吗?

javascript - 页面加载后如何使用cypress获取网络调用

unit-testing - VS-Code 错误的单元测试类型(Mocha&Chai 而不是 Jasmine)

javascript - Cypress cy.request 期望抛出/失败

cypress - 如何在柏树上模拟长按按键?

testing - cypress 和 select2 未在选择时触发

cypress - cypress 支持软断言吗?

javascript - 如何正确导出和导入cypress插件index.ts的函数?

javascript - 在 Cypress 中两次 stub 相同的端点

email - Cypress 失败的电子邮件通知