是否可以动态跳过赛普拉斯测试之一 - 意味着一个功能文件及其步骤定义?

问题描述

我有一个功能文件列表和相关步骤定义的列表。每个功能文件都涉及网站的某些特定功能。 根据 package.json 中定义的一些环境变量并代表网站的主题,由于缺少功能,我可能需要完全跳过某些功能文件(显然还有它们的步骤定义)对于某些特定主题

举一些代码示例:

  "test:cy:run:daylight": "PORT=9000 CYPRESS_THEME=daylight cypress run","test:cy:run:darkness": "PORT=9001 CYPRESS_THEME=darkness cypress run",

功能文件列表:

daylight.feature
afternoon.feature
evening.feature
night.feature

相关定义:

daylight.spec.js
afternoon.spec.js
evening.spec.js
night.spec.js

因此,在 CYPRESS_THEME=darkness 的情况下,我想从我的测试过程中完全跳过功能 evening.featurenight.feature

怎么做?想法?

这个例子是假数据,我的真实场景包括更多的功能主题,所以不幸的是,在不同的文件夹中拆分测试或使用 Cypress 标签并不是一个有效的选择。

我想到的另一个效率不高的想法是在检测 Given 的帮助下,在每个步骤定义 WhenThenCypress.env('THEME') 中放置条件,但是显然我不想采用这种方法

还有什么吗?谢谢

解决方法

您可以将测试拆分为 2 个文件夹并仅运行此文件夹中的文件

cypress run --spec "cypress/integration/daylight/**/*"

或者您可以使用标签并使用正确的标签运行测试

cypress run --record --tag "daylight"
,

正确的答案是标记测试并仅运行特定的标记......如果存在这样的功能。我相信@mosaad 在他的第二点上是错误的; --tag 命令行参数仅根据我的理解将元数据添加到运行中。它不限制运行哪些规范文件。

如果我是你,我会尝试在你的文件夹结构上发挥创意。或者,您可以实现 this person's workaround,这对我来说似乎有点沉重,但可能会完成工作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...