【问题标题】:Cucumber for REST, writing feature file when having duplicate stepsCucumber for REST,重复步骤时写入功能文件
【发布时间】:2018-09-24 02:24:35
【问题描述】:

我在编写功能文件时遇到了麻烦,因为我目前希望在每个场景中都有多个步骤定义。这是我的功能文件:

Feature: Add new voucher
   As a user I want to be able to add vouchers

Scenario Outline: Add new voucher with an invalid voucher
    Given a trip voucher <Voucher>
    When I access "/voucher" endpoint
    Then error message should be "Voucher is invalid"

Examples:
  |Voucher    |
  |ABCDEFG    |
  |1234567    |
  |invaL!Ds   |

Scenario Outline: Add a previously redeemed voucher
    Given a used voucher <Voucher>
    When I access "/voucher" endpoint
   Then error message should be "Voucher has already been used"

Examples:
  |Voucher        |
  |VALIDVOUCHER   |

我正致力于在 Go 上构建 REST API,同时学习在 Java 上创建集成测试,因为 QA 用于测试。 When I access x endpoint 线上的最佳做法是什么?我知道它会产生Duplicate step definition error。我应该改变我编写功能文件的方式,还是我遗漏了一些 Java 技巧。

【问题讨论】:

    标签: java testing automation cucumber


    【解决方案1】:

    我现在在工作中使用 SpecFlow + .NET,过去我也使用过 jBehave+Java。

    你所做的一切都很好,它不应该给你任何错误。事实上,拥有这样的 Given-When-Then 框架的优点之一是能够重用这些短语。

    您需要注意的是确保您的步骤:当我访问“/voucher”端点时:应该只映射到步骤文件中的一个 Java 方法。所以,类似:

    @When("I access "/voucher" endpoint")
    public void WhenIAccessVoucherEndpoint(){
    // implementation of your step. may be make a Rest call.  
    }
    

    因此,每次您在场景文件中引用此步骤时,框架都会始终为您调用此方法。这样,您将构建基本的构建块(或页面,如果您正在测试具有页面对象模式的网站)和短语。因此,编写更多场景将变得越来越容易,因为只需找到已实现的正确短语并查看它们是否可以重用。

    【讨论】:

      【解决方案2】:

      在您的示例中,如果两个步骤定义都调用相同的端点并执行相同的操作,那么建议Re-Use 步骤定义。

      作为最佳实践并充分利用该工具,始终建议通过参数化短语并将数据作为输入参数传递来提高步骤定义的可重用性。

      如果这些可重用的步骤定义被分组到一个通用步骤定义类下并被引用,这将有利于代码维护。该工具能够扫描所有可用的步骤定义并调用相应的函数。

      如果我们有重复的步骤定义,则有可能出现"matches more than one step definition" 错误消息。

      如果你还想维护两个不同的step-definition函数,并且每个函数都有不同的实现,那么建议修改短语

      【讨论】:

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