在赛普拉斯进行所有测试之前,是否可以执行一次代码? 我需要它在所有规格之前只能运行一次。 我要解决的问题是创建测试所需的文件,准备用户权限等。
我已经尝试过在support index.js文件中使用“ before”挂钩,但是它会运行每个测试规范。
我也试图基于我在cypress.json文件中设置的env变量在index.js中运行条件'before'钩子,像这样:
void paintEvent(QPaintEvent *event) {
radarPainter = new QPainter(radarGraphicsView);
radarPainter->setPen(Qt::green);
radarPainter->drawEllipse(10, 10, 10, 10); }
我正在更改挂钩中的变量:
"env": {
"cypress_setup": false
},
但是,赛普拉斯似乎在每次测试之前都会设置原始的env变量值。
我希望赛普拉斯能够以某种方式支持这种行为。
答案 0 :(得分:3)
从 Cypress 6.2.0 开始,您可以侦听插件文件中的 mytext
事件并在该事件处理程序中运行您想要的任何代码段。每次执行 before:run
时都会触发该事件。
*此功能目前处于试验阶段,需要将 cypress run
配置选项设置为 experimentalRunEvents
。
有关详细信息,请参阅 true
API 文档:https://on.cypress.io/before-run-api
答案 1 :(得分:0)
如果我是对的,那么您需要有一个全局设置脚本,该脚本仅在执行实际测试套件之前执行一次。目前,我认为赛普拉斯不存在这种选择。
但是,我们可以通过解决方法处理此问题。另外,请注意,按顺序运行测试被认为是反模式(基于-https://github.com/cypress-io/cypress/issues/390)。这是要遵循的步骤,
return T;
中的设置脚本作为功能cypress/support
希望这会有所帮助;但这只是一种解决方法。
答案 2 :(得分:-1)
是的,如果您在支持文件中编写代码,则可以执行此操作。在每个测试规范之前都会编译支持文件,请检查this以了解如何添加支持文件。