【问题标题】:Reusing the step names in cucumber gherkin在黄瓜小黄瓜中重用步骤名称
【发布时间】:2017-11-13 01:14:09
【问题描述】:

我在 java 中使用黄瓜小黄瓜。在这里,根据我们的要求,我需要在我的功能文件中跨场景重用这些步骤。 例如,我的功能文件中有以下两种情况。

场景:查看项目

  • 假设用户使用有效凭据登录
  • 当用户搜索具有名称的项目时
  • 然后项目显示在摘要中
  • 商品价格对用户可见

场景:编辑项目

  • 假设用户使用有效凭据登录
  • 当用户搜索具有名称的项目时
  • 并选择要编辑的项目
  • 然后项目变为用户可编辑
  • 商品价格对用户可见

在这里,“用户搜索具有名称的商品”、“商品价格对用户可见”这些步骤正在重复,这对我的测试非常有效。 但这在黄瓜小黄瓜中是不被接受的。它说错误,它迫使我为步骤使用唯一的名称。 无论如何我可以跨场景重复使用相同功能文件中的步骤吗?

一种解决方法是 - 我需要在不同的特性文件中定义这两个场景,并且需要使用黄瓜的粘合特性将每个特性文件与单独的java包关联起来进行步骤定义(注意:我只能将java包粘合到一个特性上,而不是一个类)。

所以,目前我正在定义 N 个功能文件(每个场景的单独功能文件)和相同数量的 java 包。 这使我的测试代码库太大,很快我可能会遇到可维护性问题。

【问题讨论】:

  • 步骤“商品价格对用户可见”是否在两种情况下都执行相同的操作?你所问的是黄瓜的正常行为。您可以在同一功能文件或不同功能文件中的多个场景中重复使用相同的步骤。您想为两个不同的步骤定义保持相同的名称吗?

标签: java cucumber reusability gherkin


【解决方案1】:

在需要时编写重复的步骤。有时需要重复步骤才能创建对您的利益相关者感兴趣且相关的 Gherkin。但是,请在步骤中立即委托给辅助方法。你的步骤应该是单行的。

您需要的常见行为在辅助方法中实现,您考虑的重复将减少。它可能会减少很多以至于消失。

【讨论】:

    【解决方案2】:

    您绝对可以在单个功能文件中使用重复步骤作为不同场景的一部分。而且,黄瓜小黄瓜的重复步骤只需要一个JAVA代码。

    此外,对于作为单个功能文件一部分的常用步骤,您也可以使用 Background 关键字,它将在执行每个场景之前执行。 示例:

    • 背景:
    • 假设用户使用有效凭据登录
    • 当用户搜索具有名称的项目时

    并让所有场景更轻松。

    • 场景:查看项目
    • 然后项目显示在摘要中
    • 商品价格对用户可见

    其他场景:

    • 场景:编辑项目
    • 并选择要编辑的项目
    • 然后项目变为用户可编辑
    • 商品价格对用户可见

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多