Testing Cypress:如何在所有测试开始之前运行一次代码
有没有办法在Cypress中的所有测试之前执行一次代码? 我需要它只运行一次之前,所有规格。 我想解决的问题是创建一些测试所需的文件,准备用户权限等等 我在supportindex.js文件中尝试了“before”钩子,但它运行每个测试规范 我还尝试基于在cypress.json文件中设置的env变量在index.js中运行条件“before”钩子,如下所示:Testing Cypress:如何在所有测试开始之前运行一次代码,testing,cypress,Testing,Cypress,有没有办法在Cypress中的所有测试之前执行一次代码? 我需要它只运行一次之前,所有规格。 我想解决的问题是创建一些测试所需的文件,准备用户权限等等 我在supportindex.js文件中尝试了“before”钩子,但它运行每个测试规范 我还尝试基于在cypress.json文件中设置的env变量在index.js中运行条件“before”钩子,如下所示: "env": { "cypress_setup": false }, 我正在更改挂钩中的变量: before(func
"env": {
"cypress_setup": false
},
我正在更改挂钩中的变量:
before(function () {
// Set user permissions
if (Cypress.env('cypress_admin') === false) {
// do some stuff
cy.log('o some stuff')
// Change the variable to mark the hook as executed
cy.exec('export cypress_admin="true"')
}
})
但似乎Cypress在每次测试之前都会设置原始的env变量值
我希望Cypress在某种程度上支持这种类型的操作。如果我是正确的,您需要一个全局设置脚本,它在执行实际测试套件之前只执行一次。目前,我认为Cypress不存在这样的选择 但是,我们可以通过解决方法来处理这个问题。另外,请注意,按顺序运行测试被认为是反模式的(基于-)。以下是要遵循的步骤
cypress/support
中1.***.spec.js,2.***.spec.js
希望这有帮助;不过,这只是一个解决办法。从Cypress 6.2.0开始,您可以先听
:在插件文件中运行事件,然后在该事件处理程序中运行您想要的任何代码。每次执行cypress run
时,都会触发该事件
*此功能目前处于试验阶段,需要将experimentalRunEvents
配置选项设置为true
有关更多详细信息,请参阅before:run
API文档: