赛普拉斯(Cypress):如何在所有测试开始之前运行一次代码

时间:2019-01-12 14:09:55

标签: testing cypress

在赛普拉斯进行所有测试之前,是否可以执行一次代码? 我需要它在所有规格之前只能运行一次。 我要解决的问题是创建测试所需的文件,准备用户权限等。

我已经尝试过在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变量值。

我希望赛普拉斯能够以某种方式支持这种行为。

3 个答案:

答案 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)。这是要遵循的步骤,

  1. return T;中的设置脚本作为功能
  2. 从测试中调用设置功能(想法-以 测试)
  3. 我们需要首先执行此测试。截至目前, 赛普拉斯中的默认测试顺序;因此,将要求重命名 该文件为cypress/support

希望这会有所帮助;但这只是一种解决方法。

答案 2 :(得分:-1)

是的,如果您在支持文件中编写代码,则可以执行此操作。在每个测试规范之前都会编译支持文件,请检查this以了解如何添加支持文件。