首页 > 解决方案 > 是否可以通过同一空手道命令行上的标签包含和排除

问题描述

我们可以通过在命令行中包含以下内容来选择多个场景:-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"

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

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

标签: karate

解决方案


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

所以要运行 S1 ORS2 AND NOTS3

mvn test -Dkarate.options="--tags @S1,@S2 --tags ~@S3"

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

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

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


推荐阅读