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().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/