Feature: Step definitions parameters could have default values

Scenario:

  • Given File “Example.feature” with content:

    Feature:
      Scenario:
        Given I have a cucumber
        Given I have a rotten cucumber
        Given I have a fresh cucumber
        Given I have a pickle
    
  • Given File “conftest.py” with content:

    from enum import Enum
    from re import compile as parse
    from pytest import fixture
    from pytest_bdd import given
    
    class Freshness(Enum):
      FRESH = 'fresh'
      ROTTEN = 'rotten'
      SALTED = 'salted'
    
    @fixture
    def oracle_freshness():
      return [Freshness.FRESH, Freshness.ROTTEN, Freshness.FRESH, Freshness.SALTED]
    
    @given("I have a pickle", param_defaults=dict(freshness=Freshness.SALTED))
    @given(
      parse(r"I have a ((?P<freshness>\w+)\s)?cucumber"),
      converters=dict(freshness=Freshness),
      param_defaults=dict(freshness=Freshness.FRESH)
    )
    def i_have_cucumber(freshness, oracle_freshness):
        assert freshness == oracle_freshness.pop(0)
    
  • When run pytest

  • Then pytest outcome must contain tests with statuses:

    passed

    1