【发布时间】:2021-05-12 13:55:08
【问题描述】:
tl;dr: cypress 变量是否可以存储在某个可访问的地方(如this 或类似的东西),或者如果我想访问所有这些变量以供一次使用,我是否必须进入一个无休止的回调循环?
长篇大论:
我试图用 cypress 测试覆盖的应用程序在许多不同的数据集上运行,因此为了在测试前准备测试数据,我通常会进行少量 API 调用,我希望使用它们的结果:
示例:
测试应涵盖“删除任务”功能。作为测试数据,我想预先在我们的 API 上创建一个任务。为此,我需要进行以下调用:
- 调用“.../users/me”以获取我的 userId(必需参数之一)
- 调用“.../users”以获取特定数据集的所有用户的列表(第一个 id 用于过滤另一个,然后用于 assigneeId,另一个必需参数)
- 调用“.../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