1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
|
@sequential
Feature: Steps Formatter (Step Definitions Formatter)
As a test writer
I want to get a quick overview which step definitions exist
To simplify the writing of feature tests.
. SOLUTION: Use StepsFormatter in dry-run mode, like:
.
. behave --dry-run -f steps features/
.
. NOTE: This formatter is similar to the "stepdefs" formatter in cucumber.
@setup
Scenario: Feature Setup
Given a new working directory
And a file named "features/steps/passing_steps.py" with:
"""
from behave import step
@step('a step passes')
def step_passes(context):
pass
@step('a step fails')
def step_fails(context):
assert False, "XFAIL-STEP"
"""
And a file named "features/steps/alice_steps.py" with:
"""
from behave import given, when, then
@given('{person} lives in {city}')
def step_given_person_lives_in_city(context, person, city):
pass
@when('I visit {person}')
def step_when_visit_person(context, person):
pass
@then('I meet {person} in {city}')
def step_then_meet_person_in_city(context, person, city):
pass
"""
And a file named "features/steps/bob_steps.py" with:
"""
from behave import given, when, then
@given('{person} works for {company}')
def step_given_person_works_for_company(context, person, company):
pass
@when('I plan a meeting with {person}')
def step_when_plan_meeting_with_person(context, person):
pass
@then('I meet him at the {company} office')
def step_then_meet_him_at_company_office(context, company):
pass
"""
And an empty file named "features/none.feature"
@usecase.primary
Scenario: Show available step definitions in dry-run mode
When I run "behave --dry-run -f steps features/"
Then it should pass with:
"""
GIVEN STEP DEFINITIONS[4]:
Given {person} lives in {city} # features/steps/alice_steps.py:3
Given {person} works for {company} # features/steps/bob_steps.py:3
Given a step passes # features/steps/passing_steps.py:3
Given a step fails # features/steps/passing_steps.py:7
WHEN STEP DEFINITIONS[4]:
When I visit {person} # features/steps/alice_steps.py:7
When I plan a meeting with {person} # features/steps/bob_steps.py:7
When a step passes # features/steps/passing_steps.py:3
When a step fails # features/steps/passing_steps.py:7
THEN STEP DEFINITIONS[4]:
Then I meet {person} in {city} # features/steps/alice_steps.py:11
Then I meet him at the {company} office # features/steps/bob_steps.py:11
Then a step passes # features/steps/passing_steps.py:3
Then a step fails # features/steps/passing_steps.py:7
GENERIC STEP DEFINITIONS[2]:
* a step passes # features/steps/passing_steps.py:3
* a step fails # features/steps/passing_steps.py:7
"""
But note that "the GENERIC STEP DEFINITIONS can be used as given/when/then steps"
@usecase.secondary
Scenario: Show available step definitions in normal mode
When I run "behave -f steps features/"
Then it should pass with:
"""
GIVEN STEP DEFINITIONS[4]:
Given {person} lives in {city} # features/steps/alice_steps.py:3
Given {person} works for {company} # features/steps/bob_steps.py:3
Given a step passes # features/steps/passing_steps.py:3
Given a step fails # features/steps/passing_steps.py:7
WHEN STEP DEFINITIONS[4]:
When I visit {person} # features/steps/alice_steps.py:7
When I plan a meeting with {person} # features/steps/bob_steps.py:7
When a step passes # features/steps/passing_steps.py:3
When a step fails # features/steps/passing_steps.py:7
THEN STEP DEFINITIONS[4]:
Then I meet {person} in {city} # features/steps/alice_steps.py:11
Then I meet him at the {company} office # features/steps/bob_steps.py:11
Then a step passes # features/steps/passing_steps.py:3
Then a step fails # features/steps/passing_steps.py:7
GENERIC STEP DEFINITIONS[2]:
* a step passes # features/steps/passing_steps.py:3
* a step fails # features/steps/passing_steps.py:7
"""
@language
Scenario: Show available step definitions for language=de (German)
When I run "behave --dry-run -f steps --lang=de features/"
Then it should pass with:
"""
GIVEN STEP DEFINITIONS[4]:
Angenommen {person} lives in {city} # features/steps/alice_steps.py:3
Angenommen {person} works for {company} # features/steps/bob_steps.py:3
Angenommen a step passes # features/steps/passing_steps.py:3
Angenommen a step fails # features/steps/passing_steps.py:7
WHEN STEP DEFINITIONS[4]:
Wenn I visit {person} # features/steps/alice_steps.py:7
Wenn I plan a meeting with {person} # features/steps/bob_steps.py:7
Wenn a step passes # features/steps/passing_steps.py:3
Wenn a step fails # features/steps/passing_steps.py:7
THEN STEP DEFINITIONS[4]:
Dann I meet {person} in {city} # features/steps/alice_steps.py:11
Dann I meet him at the {company} office # features/steps/bob_steps.py:11
Dann a step passes # features/steps/passing_steps.py:3
Dann a step fails # features/steps/passing_steps.py:7
GENERIC STEP DEFINITIONS[2]:
* a step passes # features/steps/passing_steps.py:3
* a step fails # features/steps/passing_steps.py:7
"""
But note that "this may fail depending on the language you use with your features"
@language
Scenario: Show available step definitions for language=fr (French)
When I run "behave --dry-run -f steps --lang=fr features/"
Then it should pass with:
"""
GIVEN STEP DEFINITIONS[4]:
Soit {person} lives in {city} # features/steps/alice_steps.py:3
Soit {person} works for {company} # features/steps/bob_steps.py:3
Soit a step passes # features/steps/passing_steps.py:3
Soit a step fails # features/steps/passing_steps.py:7
WHEN STEP DEFINITIONS[4]:
Quand I visit {person} # features/steps/alice_steps.py:7
Quand I plan a meeting with {person} # features/steps/bob_steps.py:7
Quand a step passes # features/steps/passing_steps.py:3
Quand a step fails # features/steps/passing_steps.py:7
THEN STEP DEFINITIONS[4]:
Alors I meet {person} in {city} # features/steps/alice_steps.py:11
Alors I meet him at the {company} office # features/steps/bob_steps.py:11
Alors a step passes # features/steps/passing_steps.py:3
Alors a step fails # features/steps/passing_steps.py:7
GENERIC STEP DEFINITIONS[2]:
* a step passes # features/steps/passing_steps.py:3
* a step fails # features/steps/passing_steps.py:7
"""
But note that "this may fail depending on the language you use with your features"
|