【问题标题】:cypress write customised logs into file with writeFile is a good idea?赛普拉斯使用 writeFile 将自定义日志写入文件是个好主意吗?
【发布时间】:2018-12-18 03:44:42
【问题描述】:

我想将一些自定义日志写入带有cypress 的文件。如“当前测试用例名称”、“用于本次测试的用户ID”、“失败或通过”等。

我搜索了一会儿,发现 cy.writeFile 满足我的需求。但似乎大多数人会推荐cy.task 进行日志记录。

那么cy.writeFile 记录是个好主意吗?如果不是,是什么原因?

谢谢!

顺便说一句,这是代码,非常简单:

function logger (log) {
  cy.writeFile('logs/combined.log', log + '\n', { flag: 'a+' })
}

module.exports = {
  logger
}

【问题讨论】:

    标签: cypress


    【解决方案1】:

    cy.task() 命令通常在您不希望测试本身中断日志记录或者如果您想与节点进程本身交互时使用。而 cy.writeFile() 必须在每个测试之间调用,并且不能与节点进程交互。您可以在插件文件中添加内容,以便无论正在运行的测试如何都可以生成连续的日志,并将这些内容连接到同一个文件中。

    // in plugins/index.js file
    on('task', {
      readJson: (filename) => {
        // reads the file relative to current working directory
        return fsExtra.readJson(path.join(process.cwd(), filename)
      }
    })
    

    https://docs.cypress.io/api/commands/task.html#Command

    cy.task() 为运行任意节点代码提供了一个逃生舱,所以 您可以在测试范围之外采取必要的措施 柏。这非常适合:

    播种您的测试数据库。在节点中存储您想要的状态 在规范文件之间持久化。执行并行任务,例如制作 赛普拉斯之外的多个 http 请求。运行外部 过程。在任务插件事件中,如果未定义命令将失败 被退回。这有助于捕获拼写错误或任务事件所在的情况 未处理。

    如果不需要返回值,则显式返回 null 以发出信号 给定事件已被处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 2021-03-27
      • 2020-10-26
      • 2023-02-14
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      相关资源
      最近更新 更多