【问题标题】:Can you use wildcard characters with tags to get all matching tags您可以使用带有标签的通配符来获取所有匹配的标签
【发布时间】:2021-07-17 01:47:49
【问题描述】:

我想知道您是否可以使用带有标签的通配符来获取与特定模式匹配的所有已标记场景/功能。

例如,我在许多功能文件中的许多场景中使用了 17 个唯一标签。模式是“@jira=CIS-”后跟 4 个数字,例如 @jira=CIS-1234 和 @jira=CIS-5678。

我希望我可以使用通配符或可以为我找到所有匹配项的东西。

当我运行所有功能/场景时,我希望能够将它们排除在运行之外。 我尝试了以下方法:

--tags ~@jira

--tags ~@jira*

--tags ~@jira=*

--tags ~@jira=

不幸的是,没有人给我想要的结果。当我使用确切的标签时,我只能排除它们,例如。 ~@jira=CIS-1234。必须将每一个(17 个不同标签中的)添加到命令行并不是一个好的解决方案。这些标签可以经常更改,添加新标签并删除旧标签,而且它会构成一个真正的长命令。

【问题讨论】:

    标签: karate


    【解决方案1】:

    是的。首先阅读这个 - 有这种未记录的表达式语言(基于 JS)用于基于 @key=val1,val2 表单的高级标签选择:https://stackoverflow.com/a/67219165/143475

    所以你应该能够做到这一点:

    valuesFor('@jira').isPresent
    

    甚至(这里s 将是一个字符串,如果你知道怎么做,你甚至可以在其上执行 JS 正则表达式):

    valuesFor('@jira').isEach(s => s.startsWith('CIS-'))
    

    很高兴得到您的确认,然后这个线程本身可以帮助其他人,我们可以在某个时候将它添加到文档中。

    【讨论】:

    • 抱歉,我应该更具体一些,我使用 maven 和竹子来运行命令行,例如“clean test -Dthreads=1 -Dkarate.env=myenv”-Dkarate.options=" --tags ~@ignore --tags ~jira classpath:features""。这个例子是通过代码显示的。这不是我想要的,我希望能够在命令行上执行此操作。或者该功能不存在?我还没有升级到 1.0,我在 0.9.2。
    • @CoreySnow 您可以按原样使用该文本来代替您使用~@foo 的位置,请尝试一下。是的,它很丑,它是实际的 JS 代码,但它应该可以工作
    • 它工作正常,部分很好。我怎样才能将它结合为 ~@ignore 和 ~@jira?我尝试了一些组合,但没有产生我需要的结果。我试过“-Dkarate.options=--tags ~@ignore --tags !valuesFor('@jira').isPresent classpath:features”。似乎 --tags !valuesFor('@ignore').isPresent, !valuesFor('@jira') 也不起作用。
    • @CoreySnow 你不能混合使用“旧”和“新”符号。所以试试:not('@ignore') && !valuesFor('@jira').isPresent - 如果这不起作用,我放弃:) 请贡献代码?
    • 遗憾的是,这也没有用。它没有用@ignore 运行任何东西,但它仍然用@jira=CIS-1234 运行那些,这很奇怪。可能是因为我们在 ParallelTest.java 中硬编码了 @KarateOptions(tags = { "~@ignore" }?
    猜你喜欢
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 2021-12-20
    • 2011-04-04
    • 1970-01-01
    • 2018-07-08
    相关资源
    最近更新 更多