在Cucumber和Gherkin中使用标签是否有最佳实践?

时间:2015-09-07 08:04:18

标签: cucumber gherkin

在Cucumber和Gherkin中使用标签是否有最佳做法?

3 个答案:

答案 0 :(得分:1)

标签旨在更改方案的运行时条件。最常用的标签是@javascript(在ruby世界中)更改运行时设置,以便在javascript正常工作的条件下运行场景。

另一个经典标签是@wip,基本上说,这是我目前正在处理的场景。这允许我们告诉黄瓜只运行我们正在处理的场景。

我的建议是不要在此之外使用标签,特别是不要使用标签:

  1. 针对特定场景进行设置 - 使用Given而不是
  2. 根据您网域的某些部分对功能进行分组 - 请改用功能的文件夹结构。
  3. 通常使用标签最低限度。我创建/使用的一些标签

    @selenium - 告诉黄瓜使用特定设置运行此特定方案,该设置将打开实际的浏览器。我在@wip中使用了很多,所以我可以看到我的场景正在做什么

    @slow - 告诉黄瓜这个特定场景的运行时成本很高。这使我们不能每次都运行它

答案 1 :(得分:0)

我会说当使用框架的这些功能时,常识是你最好的朋友......

IMO您想要使用标记的主要原因是:

1 :.按功能分组功能,在处理大量功能文件时非常方便

2 :.降低在属于功能/功能标记的一组方案之前或之后需要执行的调用的复杂性(例如,数据设置/拆卸)

如果您没有将其用于分组测试或降低测试套件的复杂性,那么您可能会做错了。

另外,使用标签系统在黄瓜中进行测试可以让你玩黄瓜文件夹结构,没有副作用......

如果你不使用黄瓜文件夹结构并且不使用标签,那么黄瓜不知道如何找到你的测试,你必须手动说明在哪里找到它们或者递归地要求所有相关文件夹,供您的功能使用

答案 2 :(得分:0)

  1. 标记是一种对方案进行分组的方法。它们是@ -prefixed字符串,您可以在Feature,Scenario,Scenario Outline或Examples关键字上放置任意数量的标记。标签中的空格字符无效,可能会将它们分开。

  2. 标签继承自父元素。例如,如果您在功能上方放置标记,则该功能中的所有方案都将获得该标记。

  3. 同样,如果将标记放在Scenario Outline或Examples关键字上方,则从示例行派生的所有方案都将继承标记。

  4. 您可以告诉Cucumber只运行包含某些标记的方案,或者排除包含某些标记的方案。

  5. 参考:https://cucumber.io/docs/reference#tags