【问题标题】:Cypress API testing - Using custom commands to return a value to avoid duplicating codeCypress API 测试 - 使用自定义命令返回值以避免重复代码
【发布时间】:2021-09-11 11:55:40
【问题描述】:

首先。我特意重新学习 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 等中使用命令,所以那个位不会给我带来任何问题。我已经在对不返回值的事情使用命令,所以我知道我做的很正确。

【问题讨论】:

标签: javascript mocha.js cypress


【解决方案1】:

我使用以下方法对其进行了排序:

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 我在测试代码中过早地关闭了这些块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    相关资源
    最近更新 更多