Feature: Scenario Outline examples could be tagged¶
Rule:
Background:
Given File “steps.feature” with content:
Feature: Steps are executed by corresponding step keyword decorator Scenario Outline: Given I produce <outcome> test @passed Examples: |outcome| |passed | @failed Examples: |outcome| |failed | @both Examples: |outcome| |passed | |failed |
Given File “pytest.ini” with content:
[pytest] markers = passed failed both
And File “conftest.py” with content:
from pytest_bdd.compatibility.pytest import fail from pytest_bdd import given @given('I produce passed test') def passing_step(): ... @given('I produce failed test') def failing_step(): fail('Enforce fail')
Scenario:
When run pytest
cli_args
-m
passed
Then pytest outcome must contain tests with statuses:
passed
failed
1
0
Scenario: Run pytest with no marker filter
When run pytest
cli_args
-m
failed
Then pytest outcome must contain tests with statuses:
passed
failed
0
1
Scenario: Run pytest with marker ‘passed or failed’
When run pytest
cli_args
-m
passed or failed
Then pytest outcome must contain tests with statuses:
passed
failed
1
1
Scenario: Run pytest with marker ‘not both’
When run pytest
cli_args
-m
not both
Then pytest outcome must contain tests with statuses:
passed
failed
1
1
Scenario: Run pytest with marker ‘both’
When run pytest
cli_args
-m
both
Then pytest outcome must contain tests with statuses:
passed
failed
1
1
Scenario: Run pytest with all markers
When run pytest
Then pytest outcome must contain tests with statuses:
passed
failed
2
2
Background:
Given File “steps.feature” with content:
@feature_tag Feature: Steps are executed by corresponding step keyword decorator Scenario Outline: Given I produce <outcome> test Examples: |outcome| |passed | @examples_tag Examples: |outcome| |failed |
Given File “pytest.ini” with content:
[pytest] markers = feature_tag examples_tag
And File “conftest.py” with content:
from pytest_bdd.compatibility.pytest import fail from pytest_bdd import given @given('I produce passed test') def passing_step(): ... @given('I produce failed test') def failing_step(): fail('Enforce fail')
Example: Run pytest with feature_tag
When run pytest
cli_args
-m
feature_tag
Then pytest outcome must contain tests with statuses:
passed
failed
1
1
Example: Run pytest with examples_tag
When run pytest
cli_args
-m
examples_tag
Then pytest outcome must contain tests with statuses:
passed
failed
0
1
Example: Run pytest with not feature_tag
When run pytest
cli_args
-m
not feature_tag
Then pytest outcome must contain tests with statuses:
passed
failed
0
0
Example: Run pytest with not examples_tag
When run pytest
cli_args
-m
not examples_tag
Then pytest outcome must contain tests with statuses:
passed
failed
1
0
Example: Run pytest with feature_tag and collect only
When run pytest
cli_args
-m
feature_tag
–collect-only
Then pytest outcome must match lines:
collected 2 items
Example: Run pytest with examples_tag and collect only
When run pytest
cli_args
-m
examples_tag
–collect-only
Then pytest outcome must match lines:
collected 2 items / 1 deselected / 1 selected
Example: Run pytest with not feature_tag and collect only
When run pytest
cli_args
-m
not feature_tag
–collect-only
Then pytest outcome must match lines:
collected 2 items / 2 deselected*
Example: Run pytest with not examples_tag and collect only
When run pytest
cli_args
-m
not examples_tag
–collect-only
Then pytest outcome must match lines:
collected 2 items / 1 deselected / 1 selected