Cucumber 小黄瓜:我们如何使用相同的步骤定义并从特征文件传递可选参数

Cucumber 小黄瓜:我们如何使用相同的步骤定义并从特征文件传递可选参数,cucumber,rest-assured,gherkin,Cucumber,Rest Assured,Gherkin,我在restasured中使用Cucumber插件来编写我的功能文件并自动化REST服务。下面是我的场景 Scenario Outline: Validate the elements in the GET response Given I have the data setup to test "<version>" and "<order>" When ... Then the response should contain accurate

我在restasured中使用Cucumber插件来编写我的功能文件并自动化REST服务。下面是我的场景

Scenario Outline: Validate the elements in the GET response
    Given I have the data setup to test "<version>" and "<order>" 
    When ...
    Then the response should contain accurate data
    Examples:
      | version | order   |
      | V1      | O1      |
      | V2      | O2      |
我的问题是,我希望有另一个类似下面这样的场景,我希望利用上面相同的步骤定义,但将附加参数“special order”作为可选参数传递。 我可以这样做吗?或者我需要为下面给定的步骤创建一个新的步骤定义吗?我在考虑方法重载/传递可选参数,但不确定它在小黄瓜中是否有效。像这样的

 Ex:
  Scenario Outline: Validate the elements in the GET response for special order
    Given I have the data setup to test "<version>" and "<order>"  and "<specialorder>" 
   When ...
    Then the response should contain accurate data
    Examples:
      | version | order   | specialorder
      | V1      | O1      | SO1
      | V2      | O2      | SO2

public void iHaveTheDataSetupToTestAnd(String clientCharacteristicTypeCd, String clientCharacteristicDataType, String specialOrder)
Ex:
场景大纲:验证特殊订单的GET响应中的元素
假设我有要测试“”和“”的数据设置
什么时候
那么响应应该包含准确的数据
示例:
|版本|命令|特别领主
|V1 | O1 | SO1
|V2 | O2 | SO2
public void i保存数据设置以支持(String clientCharacteristicTypeCd、String clientCharacteristicDataType、String SpecialLorder)

您想要的是委托给支持这两个步骤的助手。然后实现两个步骤,只需捕获调用并将其转发给助手即可


这将允许您在没有step类中的大量逻辑的情况下完成各种有趣的事情。在我的例子中,每一步通常只是一行或两行,我捕获参数并将它们转发给助手,在那里驱动被测系统的所有有趣的事情都会发生

您想要的是委托给支持这两个步骤的助手。然后实现两个步骤,只需捕获调用并将其转发给助手即可


这将允许您在没有step类中的大量逻辑的情况下完成各种有趣的事情。在我的例子中,每一步通常只是一行或两行,我捕获参数并将它们转发给助手,在那里驱动被测系统的所有有趣的事情都会发生

是否要避免在步骤定义中检查参数是否为空?如果您可以检查,那么这就足够了,我想我想对上述两个场景使用相同的步骤定义,但是如果我为其中一个场景传递了2个参数,并且步骤定义的签名中有3个参数,那么它将失败,并出现小黄瓜错误。是否要避免检查步骤定义中的参数是否为空?如果你可以检查,那么这就足够了,我想我想对上述两个场景使用相同的步骤定义,但是如果我为其中一个场景传递2个参数,并且步骤定义的签名中有3个参数,那么它将失败,并出现小黄瓜错误。谢谢Thomas。您知道如何通过功能文件和步骤定义概念来实现此帮助器吗?是的,我知道如何实现。您要做的是添加一个或多个类来解决您想要解决的问题。然后根据需要在steps类中创建这些助手的实例。我不久前写了一系列使用这种技术的博客文章,其中一篇文章是Thank Thomas。您知道如何通过功能文件和步骤定义概念来实现此帮助器吗?是的,我知道如何实现。您要做的是添加一个或多个类来解决您想要解决的问题。然后根据需要在steps类中创建这些助手的实例
 Ex:
  Scenario Outline: Validate the elements in the GET response for special order
    Given I have the data setup to test "<version>" and "<order>"  and "<specialorder>" 
   When ...
    Then the response should contain accurate data
    Examples:
      | version | order   | specialorder
      | V1      | O1      | SO1
      | V2      | O2      | SO2

public void iHaveTheDataSetupToTestAnd(String clientCharacteristicTypeCd, String clientCharacteristicDataType, String specialOrder)