如何解决Cypress API 测试 - 使用自定义命令返回值以避免重复代码
首先。我特意重新学习 JS/Cypress,特意重新从基础开始,所以提前道歉。
我目前正在使用 Cypress 进行 REST API 测试。我正在从现有的 Ruby/Selenium 框架迁移测试,我想使用类似于编写 Ruby 函数的方法来清理我的代码,因为我目前正在复制代码。
一个例子: 我有一段代码可以生成过去 365 天的日期(在这种情况下使用 ISOString 是有原因的)
var date = new Date();
date.setDate(date.getDate() - 365)
var minDate = date.toISOString().split('T')[0]
我想做类似的事情
Cypress.Command.add('dateGen',() => {
var date = new Date();
date.setDate(date.getDate() - 365)
var minDate = date.toISOString().split('T')[0]
})
并调用它。在这种情况下,我想使用类似的方法将它调用到我的测试中
(请原谅不正确的语法,我只是像 (Ruby/JS) 插图那样做):
var date = cy.dateGen
然而,在任何 js/cypress 友好组合中运行它都会失败,因为命令不返回值。
我已经准备好在 index.js
等中使用命令,所以这一点不会给我带来任何问题。我已经在对不返回值的事情使用命令,所以我知道我做的对。
解决方法
我使用以下方法对其进行了排序:
Cypress.Commands.add('dateGenerator',(days) => {
var newDate = new Date();
newDate.setDate(newDate.getDate() - days)
var date = newDate.toISOString().split('T')[0]
return date
})
然后通过
调用它cy.dateGenerator(noOfDays)
.then((date) => {
var minDate = date
}
我缺少的一点是
return date
并且我在我的测试代码中过早地关闭了块。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。