问题描述
我有一个功能文件列表和相关步骤定义的列表。每个功能文件都涉及网站的某些特定功能。
根据 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.feature
和 night.feature
怎么做?想法?
这个例子是假数据,我的真实场景包括更多的功能和主题,所以不幸的是,在不同的文件夹中拆分测试或使用 Cypress 标签并不是一个有效的选择。
我想到的另一个效率不高的想法是在检测 Given
的帮助下,在每个步骤定义 When
、Then
和 Cypress.env('THEME')
中放置条件,但是显然我不想采用这种方法。
还有什么吗?谢谢
解决方法
您可以将测试拆分为 2 个文件夹并仅运行此文件夹中的文件
cypress run --spec "cypress/integration/daylight/**/*"
或者您可以使用标签并使用正确的标签运行测试
cypress run --record --tag "daylight"
,
正确的答案是标记测试并仅运行特定的标记......如果存在这样的功能。我相信@mosaad 在他的第二点上是错误的; --tag
命令行参数仅根据我的理解将元数据添加到运行中。它不限制运行哪些规范文件。
如果我是你,我会尝试在你的文件夹结构上发挥创意。或者,您可以实现 this person's workaround,这对我来说似乎有点沉重,但可能会完成工作。