是否可以在同一空手道命令行上通过标签包含和排除

Tim*_*ham 2 karate

我们可以通过在命令行中包含以下内容来选择多个场景:-Dcucumber.options="--tags @S1,@S2,@S6"

如果我想排除@S6,我可以使用: -Dcucumber.options="--tags ~@S6"

但如果我想包含 @S1、@S2 并排除 @S6,所有标签都会被忽略: -Dcucumber.options="--tags @S1,@S2,~@S6"

如果我尝试使用以下选项加倍,所有标签也会被忽略: -Dcucumber.options="--tags @S1,@S2" -Dcucumber.options="--tags ~@S6"

是否有一种命令行方式可以在一个命令行中包含和排除?

我想这样做的原因是运行所有类型的测试,但排除使用某些可能暂时关闭的外部系统的测试。

Pet*_*mas 7

编辑:事实证明我并没有完全意识到黄瓜世界中 AND 和 OR 之间的区别。这个答案这篇文章是一个很好的参考,寻找“逻辑或”和“逻辑与”:

所以运行S1 ORS2 AND NOTS3

mvn test -Dkarate.options="--tags @S1,@S2 --tags ~@S3"
Run Code Online (Sandbox Code Playgroud)

使用 Java(或Runner)API,只需使用逗号表示 OR,使用分隔字符串表示 AND:

Results results = Runner.path("classpath:com/myco/some.feature")
            .tags("@S1,@S2", "~@S3")
            .parallel(5);
Run Code Online (Sandbox Code Playgroud)

对于真正高级的案例,另请参阅:https ://stackoverflow.com/a/67224240/143475