如何将Cucumber功能文件中的方案名称作为Cucumber步骤中的参数传递?

问题描述 投票:1回答:1

我需要一些帮助,如果有人可以提供帮助,我将不胜感激?

我需要在黄瓜特征文件中传递方案名称作为步骤中的参数。

在“后台”步骤中-我正在启动浏览器并登录到该应用程序,因此不必在每种情况下都重复相同的步骤。有一种JAVA方法可以启动GUI的视频录制,该视频正在后台测试中使用-并且该视频录制将用于各个场景-因此,如果功能文件中有10个场景-需要提供视频录制10个输出,显示针对这10个场景的自动化运行。录制视频的方法根据将要传递的参数保存文件名。

例如,特征文件中的“我的方案是:

Feature: Do Something

Background:
    Given I start the recording for the scenario "Pass the scenario name here"
    And I navigate to the login page
    When I submit username and password
    Then I should be logged in 

Scenario: Scenario Name
    Given I start the test for "Scenario Name"
    Then it should do something
    And stop the recording

Scenario: Scenario Name 2
    Given I start the test for "Scenario Name 2"
    Then it should do something
    And stop the recording

如何在步骤中将方案名称作为参数传递?

java cucumber gherkin
1个回答
0
投票

开始记录测试执行不是您的黄瓜测试所需要的。正如您所发现的,要完成您想要的工作非常困难。

这是Cucumber Hooks可以提供帮助的地方:

@Binding
public class TestRecorder {
    private final VideoRecorder videoRecorder;

    public TestRecorder() {
        this(new VideoRecorder(...));
    }

    public TestRecorder(VideoRecorder videoRecorder) {
        this.videoRecorder = videoRecorder;
    }

    @Before
    public void BeginRecording(Scenario scenario) {
        String scenarioName = scenario.getName();

        // do something with scenarioName and start recording...
        videoRecorder.start();
    }

    @After
    public void StopRecording(Scenario scenario) {
        String scenarioName = scenario.getName();

        // Stop recording, and use scenarioName to save to a file
        videoRecorder.stop();
    }
}

方案开始之前,请开始录像。 TestRecorder类可以声明私有字段来保存对录像机的引用。传递到方案挂接之前和之后的钩子Scenario对象(BeginRecording和StopRecording)为您提供有关该方案的信息,包括名称。使用场景名称作为文件名,这应该可以给您足够的足以将视频记录保存到文件中。

由于这只是一个POJO,因此您也可以为视频录制功能编写一些单元测试(如果您确实需要的话。

现在您的黄瓜测试可以专注于被测系统,而不是系统监视测试:

Feature: Do Something

Background:
    Given I navigate to the login page
    When I submit username and password
    Then I should be logged in 

Scenario: Scenario Name
    When I do the thing
    Then it should do something

Scenario: Scenario Name 2
    When I do the thing
    Then it should do something

无需传递功能文件中的方案名称。这一切都是在黄瓜钩子“幕后”完成的。

© www.soinside.com 2019 - 2024. All rights reserved.