我想用cypress
将一些自定义的日志写入文件。例如“当前测试用例名称”,“用于此测试的用户ID”,“失败或通过”等。
我搜索了一段时间,发现cy.writeFile
符合我的需求。但是似乎大多数人会推荐cy.task
进行记录。
cy.writeFile
记录好主意吗?如果没有,原因是什么?
谢谢!
顺便说一句,这是非常简单的代码:
function logger (log) {
cy.writeFile('logs/combined.log', log + '\n', { flag: 'a+' })
}
module.exports = {
logger
}
答案 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以表示信号 给定事件已处理。