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

Posted

技术标签:

【中文标题】是否可以通过同一空手道命令行上的标签包含和排除【英文标题】:Is it possible to include and exclude via tags on the same karate command line 【发布时间】:2022-01-23 15:38:13 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

所以运行 S1 OR S2 AND NOT S3

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

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

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

真的高级案例,另见:https://***.com/a/67224240/143475

【讨论】:

我认为这里可能存在一些错误。错误一:运行器和命令行不会对 demo 中的相同标签运行相同的测试。例如对于 mvn clean test -Dcucumber.options="--tags @smoke,~@fire" -Dtest=TagsRunner 命令行结果是所有四个场景都运行对于 mvn clean test -Dtest=TagsSmokeNotFireRunner 结果只有特征 1,场景 1运行第二个错误将为此项目工作。我认为有两个包含标签和一个排除标签存在问题。根据最初的问题,我认为这会忽略所有标签。 也许吧。也许不吧。只有一种方法可以确定:github.com/intuit/karate/wiki/How-to-Submit-an-Issue @TimFeltham 非常感谢。希望编辑后的答案能澄清。 @Prometheus IMO,您应该关闭/接受您的未解决问题。

以上是关于是否可以通过同一空手道命令行上的标签包含和排除的主要内容,如果未能解决你的问题,请参考以下文章

命令行上的 Sublime Text 3

命令行上的 Maven 依赖项更新

命令行上的 vcpkg 设置错误

如何获得一个bash子进程的命令行上的进程id

命令行上的数据科学第二版 四创建命令行工具

用awk如何读取shell命令行上的参数(参数可以是带空格的)