File: formatter.steps.feature

package info (click to toggle)
behave 1.2.6-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,160 kB
  • sloc: python: 19,857; makefile: 137; sh: 18
file content (181 lines) | stat: -rw-r--r-- 8,685 bytes parent folder | download | duplicates (3)
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"