Cucumber多标签组合执行返回0场景0步骤,求排查方案
Cucumber-js执行后无场景匹配的问题排查
以下是可能导致执行结果为0 scenarios的原因及解决方法:
标签逻辑不符合场景实际情况
你当前的标签规则是@putLockDev and @getLockDev and @dev,这要求单个场景必须同时包含这三个标签才会被选中执行。如果你的场景都是分别带有其中1-2个标签,没有场景同时满足三个标签的条件,就会出现无匹配场景的情况。
可以根据实际需求调整逻辑,比如要执行带@dev且包含@putLockDev或@getLockDev的场景,改成:--tags="(@putLockDev or @getLockDev) and @dev"未指定feature文件路径
Cucumber-js默认会查找当前目录下的features文件夹,如果你的feature文件存放在其他路径,需要在命令中明确指定路径。比如你的feature文件在test/features目录下,命令要改成:./node_modules/.bin/cucumber-js test/features --format json:cucumber.json --tags='@putLockDev and @getLockDev and @dev'脚本中的引号解析问题
在package.json的scripts中,不同操作系统对引号的解析可能存在差异。你当前用单引号包裹标签规则,部分环境可能无法正确解析,建议尝试去掉单引号,或者改用转义的双引号:"atdd:dev": "./node_modules/.bin/cucumber-js --format json:cucumber.json --tags=\"@putLockDev and @getLockDev and @dev\""feature文件格式或命名错误
检查你的feature文件是否满足以下要求:- 文件后缀必须是
.feature - 文件开头有正确的
Feature:声明 - 场景以
Scenario:或Scenario Outline:标记
格式不规范的文件会被Cucumber-js忽略,导致无法识别到场景。
- 文件后缀必须是
标签拼写不一致
Cucumber的标签是大小写敏感的,检查feature文件中的标签拼写是否和命令中的完全一致,比如@PutLockDev和@putLockDev会被视为两个不同的标签,拼写错误会导致无匹配场景。
内容的提问来源于stack exchange,提问作者Ramana
相关产品推荐
相关产品推荐

