【问题标题】:How to work with multiple variables in Cypress?如何在赛普拉斯中使用多个变量?
【发布时间】:2021-05-12 13:55:08
【问题描述】:

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

长篇大论:

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

示例:

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

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

我目前有自定义命令来处理这些特定的 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 个变量,我是否必须添加更多嵌套回调,或者有没有办法将这些变量存储在一个可访问的位置?

【问题讨论】:

    标签: cypress


    【解决方案1】:

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

    【讨论】:

    • 但是正确的做法是什么?
    猜你喜欢
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 2022-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多