赛普拉斯用writeFile将自定义日志写入文件是一个好主意吗?

时间:2018-12-18 03:44:42

标签: cypress

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

我搜索了一段时间,发现cy.writeFile符合我的需求。但是似乎大多数人会推荐cy.task进行记录。

cy.writeFile记录好主意吗?如果没有,原因是什么?

谢谢!

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

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

module.exports = {
  logger
}

1 个答案:

答案 0 :(得分:0)

当您不希望测试本身中断日志记录,或者想要与节点进程本身进行交互时,通常使用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()提供用于运行任意Node代码的转义阴影,因此   您可以在测试范围之外采取必要的测试操作   柏。这非常适合:

     

播种您的测试数据库。将状态存储在所需的节点中   在规格文件之间保持不变。执行并行任务,例如制作   赛普拉斯之外的多个http请求。运行外部   处理。在任务插件事件中,如果未定义,命令将失败   返回。这有助于捕获错别字或任务事件为   没有处理。

     

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