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

如何在Cypress中使用多个变量?,cypress,Cypress,tl;dr:cypress变量是否可以存储在某个可访问的地方(比如this或类似的地方),或者如果我想一次性访问所有这些变量,我是否必须进入一个无休止的回调周期 长话短说: 我试图用cypress测试覆盖的应用程序在许多不同的数据集上运行,因此为了在测试之前准备测试数据,我通常会进行一些API调用,并且我希望处理它们的结果: 示例: 测试应包括“删除任务”功能。作为测试数据,我想在API上预先创建一个任务。为此,我需要打以下电话: 调用“../users/me”获取我的用户ID(所需参数之一)

tl;dr:cypress变量是否可以存储在某个可访问的地方(比如
this
或类似的地方),或者如果我想一次性访问所有这些变量,我是否必须进入一个无休止的回调周期

长话短说:

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

示例:

测试应包括“删除任务”功能。作为测试数据,我想在API上预先创建一个任务。为此,我需要打以下电话:

  • 调用“../users/me”获取我的用户ID(所需参数之一)
  • 调用“../users”获取特定数据集的所有用户列表(第一个id用于筛选另一个,然后用于assigneeId,另一个必需参数)
  • 使用以前的id作为所需参数调用“../tasks”
  • 我目前有一些自定义命令,可以在返回结果时处理这些特定的api调用。然后调用这些命令并将其返回保存为cypress变量。如果要执行第三个api调用,我必须执行以下操作:

    cy.getUserID().then((userId)=>{
    cy.wrap(userId).as('userId'))
    })
    cy.getAllUsersForTenant()。然后((用户)=>{
    cy.get('@userId')。然后((userId)=>{
    const result=users.find((escalationUserId)=>escalationUserId!==userId)
    cy.wrap(result.id).as('assigneeId'))
    })
    })
    cy.get('@assigneeId')。然后((assigneeId)=>{
    cy.get('@userId')。然后((userId)=>{
    //使用assigneeId和userId进行POST调用
    })
    })
    

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

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