当前位置: 首页 > 知识库问答 >
问题:

Gherkin/Cucumber:我们如何使用相同的步骤定义并从特性文件传递可选参数

晁璞
2023-03-14

我在RestAssured中使用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      |

我的步骤定义具有方法的以下签名:

@Given("^I have the data setup to test \"([^\"]*)\" and \"([^\"]*)\"$")
    public void iHaveTheDataSetupToTestAnd(String clientCharacteristicTypeCd, String clientCharacteristicDataType)

我的问题是,我想有另一个类似下面这样的场景,我想利用上面相同的步骤定义,但传递一个额外的参数“Special Order”作为可选的。我可以这样做吗?或者我需要为下面给定的步骤创建一个新的步骤认知吗?我在考虑方法重载/传递可选参数,但不确定它是否适用于Gherkin。像这样的东西

 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)

共有1个答案

鲁波光
2023-03-14

您希望委托给支持这两个步骤的助手。然后实现两个步骤,这两个步骤除了捕捉调用并将其转发给帮助器之外,没有什么更多的作用。

这将允许您做各种有趣的事情,而不需要在step类中有很多逻辑。每一步通常只有一两行。在我的例子中,我捕捉参数并将它们转发给一个帮助器,在那里发生了驱动被测试系统的所有有趣的事情。

 类似资料:
  • 我用Cucumber特性文件和Java步骤定义文件进行了一个简单的设置。 feature.feature->StepDefinition.java->PageObject.java 如上所示,我在这里使用了三个步骤定义文件。并且cucumber可以识别这两个文件中的步骤定义。但是当AcceptPage.java文件中定义了“and I Accept”步骤时,它甚至不尝试运行该步骤。如果我将它移动到

  • 有没有办法调用cucumber来exe一些用Java编写的特性文件?(不是作为Junit) 我理解您可以通过mvn或Gradle运行Cucumber-JVM作为Junit测试的一部分。 但我不想将此BDD测试作为构建过程的一部分运行。我想在配置项的最后一步调用cucumber,它将执行Ruby、Cpp、Java中的任何步骤定义

  • TL:DR控制台不显示缺少步骤的步骤正则表达式 编辑:添加功能文件

  • 使用Serenity-Cucumber,我正在尝试构建一个测试套件,以便我可以通过多个功能文件重用步骤定义(给定、何时、然后和...)。 例如: 上面的测试用例记录在一个用户中,我需要将其用于其他场景。例如,如果我添加了一个测试用例来更新密码,则需要在更新密码场景之前执行上述场景。 测试将需要执行登录步骤,然后更新密码步骤。从我有限的知识来看,似乎我需要在步骤。因此,在更新密码方案之前,我将有以下

  • 我有多个项目,我想为所有项目实施cucumber js E2E测试。我有一个步骤定义文件,可用于测试所有这些项目,但我希望有多个功能文件,每个项目文件夹包含特定于项目的功能文件。这是布局: 步骤定义:项目/E2E/step_definitions/chat.js 功能文件:项目/project_1/功能/feature_1.js 现在,由于步骤定义在features文件夹之外,我得到了未实现的步骤