How can i get cucumber scenario variables in title?
Asked Answered
D

1

6

I would expect to be able to have my scenario outline title have more information by using the examples within the title itself:

 Scenario Outline: A <some> step is <result>
    When a <some> step
    Then I get <result>
    Examples:
    | some    | result  |
    | passing | passed  |
    | failing | skipped |
    Then my scenario titles end up very useful:
    Scenario: A passing step is passed
    Scenario: A failing step is skipped
Doughboy answered 31/5, 2018 at 19:6 Comment(1)
I think I did this: Scenario Outline: A '<some>' step is '<result>' which didn't give the expected results. I'll try again tomorrowDoughboy
R
1

The Then keyword must be above the Examples.

Feature: Scenario outline with variables

    Scenario Outline: A "<some>" step is "<result>"
      When a "<some>" step
      Then I get "<result>"
      Then my scenario titles end up very useful
      Examples:
        | some    | result  |
        | passing | passed  |
        | failing | skipped |

with the glue ScratchSteps.java

import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;

public class ScratchSteps {

    private String step;
    private String result;

    @Then("^my scenario titles end up very useful$")
    public void myScenarioTitlesEndUpVeryUseful() throws Throwable {
        System.out.printf("step: %s  result: %s%n", step, result);
    }

    @When("^a \"([^\"]*)\" step$")
    public void aStep(String step) throws Throwable {
        this.step = step;
    }

    @Then("^I get \"([^\"]*)\"$")
    public void iGet(String result) throws Throwable {
        this.result = result;
    }
}

the output is

Feature: Scenario outline with variables

  Scenario Outline: A "<some>" step is "<result>" # features/scratch.feature:3
    When a "<some>" step
    Then I get "<result>"
    Then my scenario titles end up very useful

    Examples: 

  Scenario Outline: A "passing" step is "passed" # features/scratch.feature:9
    When a "passing" step                        # ScratchSteps.aStep(String)
    Then I get "passed"                          # ScratchSteps.iGet(String)
step: passing  result: passed
    Then my scenario titles end up very useful   # ScratchSteps.myScenarioTitlesEndUpVeryUseful()

  Scenario Outline: A "failing" step is "skipped" # features/scratch.feature:10
    When a "failing" step                         # ScratchSteps.aStep(String)
    Then I get "skipped"                          # ScratchSteps.iGet(String)
step: failing  result: skipped
    Then my scenario titles end up very useful    # ScratchSteps.myScenarioTitlesEndUpVeryUseful()

2 Scenarios (2 passed)
6 Steps (6 passed)
Raseda answered 1/6, 2018 at 7:29 Comment(2)
Why isn't there a far much more easier way? can't cucumber and Selenium not collaborate for this? (why isn't it supported?)Doughboy
@Doughboy I don't understand this question. In your original question Selenium was not mentioned. What is your specific requirement you want to solve with Cucumber and Selenium? If this now would broaden your initial question, consider to raise a new question specific to your problem related to Cucumber and Selenium.Raseda

© 2022 - 2024 — McMap. All rights reserved.