如何在Cucumber中仅执行编号为偶数的1000个feature文件?
以下几种方案可以实现仅运行src/test/resources目录下编号为偶数的feature文件:
方案1:利用文件名匹配直接过滤(最简单)
如果你的feature文件命名规则是直接以数字结尾(比如test_2.feature、login_4.feature)或者纯数字命名(2.feature、1000.feature),可以直接通过Cucumber的文件名匹配参数来筛选:
命令行方式
运行Cucumber时指定匹配偶数的文件名模式:
cucumber --glue your.package.path src/test/resources/**/*[02468].feature
注:**表示递归匹配子目录,*[02468]匹配以偶数结尾的文件名部分。如果文件名是纯数字(比如2.feature),可以简化为src/test/resources/**/[02468].feature或src/test/resources/**/*[02468].feature(覆盖多位数的情况)。
Maven配置方式
在pom.xml的cucumber-maven-plugin中添加匹配规则:
<plugin> <groupId>io.cucumber</groupId> <artifactId>cucumber-maven-plugin</artifactId> <version>7.14.0</version> <!-- 使用你当前的版本 --> <configuration> <glue>your.package.path</glue> <features>src/test/resources/**/*[02468].feature</features> </configuration> </plugin>
方案2:用JUnit 5的@SelectFiles正则匹配
如果你的文件名编号是固定格式(比如feature_0002.feature这种带前置零的),可以用JUnit 5的@Cucumber注解配合@SelectFiles的正则表达式精准匹配:
import io.cucumber.junit.platform.engine.Cucumber; import io.cucumber.junit.platform.engine.SelectFiles; @Cucumber @SelectFiles("src/test/resources/**/feature_(\\d*[02468])\\.feature") public class RunEvenNumberedFeaturesTest { }
正则表达式feature_(\\d*[02468])\\.feature会匹配所有以feature_开头、偶数数字结尾、.feature后缀的文件,适配多位数编号(包括0002这种格式)。
方案3:脚本生成待执行文件列表(灵活适配复杂命名)
如果文件名规则不统一,或者需要更灵活的筛选逻辑,可以写个简单脚本提前收集所有偶数编号的feature文件路径,再传给Cucumber执行:
示例Shell脚本(Linux/macOS)
#!/bin/bash # 收集所有偶数编号的feature文件路径 even_features=$(find src/test/resources -name "*.feature" | grep -E "[0-9]*[02468]\.feature$") # 运行Cucumber cucumber --glue your.package.path $even_features
示例Python脚本(跨平台)
import os def get_even_features(): even_files = [] for root, dirs, files in os.walk("src/test/resources"): for file in files: if file.endswith(".feature"): # 提取文件名中的数字部分(假设文件名包含唯一数字编号) num = ''.join(filter(str.isdigit, file)) if num and int(num) % 2 == 0: even_files.append(os.path.join(root, file)) return even_files if __name__ == "__main__": features = ' '.join(get_even_features()) # 调用Cucumber命令 os.system(f"cucumber --glue your.package.path {features}")
运行脚本后,会自动筛选并执行所有符合条件的feature文件。
内容的提问来源于stack exchange,提问作者Tanuja doppalapudi

