Feature: Scenarios could be tagged

Background:

  • Given File “steps.feature” with content:

    Feature: Steps are executed by corresponding step keyword decorator
      @passed
      Scenario: Passed
        Given I produce passed test
    
      @failed
      Scenario: Failed
        Given I produce failed test
    
      @both
      Rule:
        Scenario: Passed
          Given I produce passed test
    
        Scenario: Failed
          Given I produce failed test
    
  • 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: Run pytest selecting tests tagged with passed

  • When run pytest

    cli_args

    -m

    passed

  • Then pytest outcome must contain tests with statuses:

    passed

    failed

    1

    0

Scenario: Run pytest selecting tests tagged with failed

  • When run pytest

    cli_args

    -m

    failed

  • Then pytest outcome must contain tests with statuses:

    passed

    failed

    0

    1

Scenario: Run pytest selecting tests tagged with 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 selecting tests not tagged with both

  • When run pytest

    cli_args

    -m

    not both

  • Then pytest outcome must contain tests with statuses:

    passed

    failed

    1

    1

Scenario: Run pytest selecting tests tagged with both

  • When run pytest

    cli_args

    -m

    both

  • Then pytest outcome must contain tests with statuses:

    passed

    failed

    1

    1

Scenario: Run pytest without marker selection (all tests)

  • When run pytest

  • Then pytest outcome must contain tests with statuses:

    passed

    failed

    2

    2