The Codeception extension for supporting parameter notation in Gherkin scenario.
- Codeception ≥ 2.2
- PHP ≥ 7.0
The extension can be installed using Composer
$ composer require edno/codeception-gherkin-param
Be sure to enable the extension in codeception.yml
as shown in
configuration below.
Enabling Gherkin Param is done in codeception.yml
.
extensions:
enabled:
- Codeception\Extension\GherkinParam
Once installed you will be able to access variables stored using Fixtures.
In scenario steps, the variables can be accessed using the syntax {{param}}
.
While executing your features the variables will be automatically replaced by their value.
From version 0.3, you can refer to an element in an array using the syntax {{param[key]}}
.
If the key does not exist, then null
is returned.
From version 0.3, you can refer to a test suite configuration parameter using the syntax {{config:param}}
.
Note that the keyword config: is mandatory. If the config parameter does not exists, then null
is returned.
Feature: Parametrize Gherkin Feature
In order to create dynamic Gherkin scenario
As a tester
I need to be able to share data between scenario steps
Scenario: Scenario using simple parameter
Given I have a parameter "test" with value "42"
Then I should see "{{test}}" equals "42"
Scenario: Scenario using array parameter
Given I have an array "test" with values [1, two, 3.14, IV, 101]
Then I should see "{{test[1]}}" equals "two"
Scenario: Scenario using config parameter
Given I have a configuration file "acceptance.suite.yml" containing
"""
theResponse: 42
"""
When I execute a scenario calling the parameter 'theResponse'
Then I should see "{{config:theResponse}}" equals "42"
The steps definition in AcceptanceTester.php
do not require any change
/**
* @Given I have a parameter :param with value :value
*/
public function iHaveAParameterWithValue($param, $value)
{
Fixtures::add($param, $value);
}
/**
* @Then I should see :arg1 equals :arg2
*/
public function iSeeEqual($arg1, $arg2)
{
$this->assertEquals($arg1, $arg2);
}
You can find more examples in the test folder.