按照 tag expression 过滤测试用例 纯粹的讲 expression 本身会让读者觉得味同嚼蜡,下面本文以不同的例子为基础,讲述如何适用基础的 tag expressions 来过滤 Cucumber 测试用例。 命令:`java cucumber.api.cli.Main --tag @focus features`只会运行 features 中那些被标记为“@focus”tag 的场景。仅仅关注某一些或者某一个场景其实在场景调试过程中非常有用,尤其是在您没有可用的 IDE 环境中,比如在没有 Window 环境的 Unix/Linux 机器上调试测试用例时;
- 运行 @focus 或者 @key 对应的测试用例
命令:`java cucumber.api.cli.Main --tag @focus,@key features`可以运行 features 中那些被标记为“@focus”和被标记为“@key”的场景。此处的逗号可以被理解为逻辑上的“OR”关系运算符,因此运行的结果是二者或者多个 tags 的并集。
- 运行被 @fast 标记并且 @bvt 标记的测试用例
命令:`java cucumber.api.cli.Main --tag @fast --tags @bvt features`可以运行 features 中那些既被 @fast 标记又 @bvt 标记的测试用例。命令可以从字面上理解为运行 BVT 测试用例中那些运行速度快的测试用例,假设您在做 code refactor,想快速验证一下所做的改动是否影响到主流程,上述命令会帮您快速运行 BVT 相关的用例,当然,前提是您已经对测试用例做了 tag。
- 不运行被 @slow 标记但是被 @bvt 标记的测试用例
命令:`java cucumber.api.cli.Main --tag ~@slow --tags @bvt features`可以运行 features 中那些被标记为 bvt 但是不被 tag @slow 修饰标记的测试用例。理想情况下,我们期望测试用例运行的足够快,但是现实测试中,通常需要对系统进行登录认证,授权,不乏有运行慢的用例,因此,标记出那些运行速度慢的用例,然后只在适合的时间运行它们,这对于提高测试用例的执行效率也是非常有必要的。此处的“~”表示否定的意思。
如果您担心用例中有同样的标记比如 @focus 也在被别人使用,不希望通过 tag 的方式来标记测试用例,Cucumber 支持以别的方式来实现同样的功能:Filter on lines 和 Filter on names。
按照行号过滤测试用例 命令:`java cucumber.api.cli.Main src/main/resources/features/FixedAmountWithdraw.feature:12:17`可以运行 FixedAmountWithdraw.feature 文件中的第 12 和 17 行,如果需要运行更多的行,只需要在 feature 文件名之后加上“:行号”。
按照场景名称过滤测试用例 命令:`java cucumber.api.cli.Main --name 固定金额取款 features`可以运行名称为“固定金额取款”的 Scenario 或者 Scenario Outline。对于 debug 单个场景时,这个功能非常有用。
|