Tutorial 4: Scenario Outline¶

A Scenario Outline provides a parametrized scenario script (or template) for the feature file writer. The Scenario Outline is executed for each example row in the Examples section below the Scenario Outline .

Write the Feature Test¶

# file:features/tutorial04_scenario_outline.feature Feature: Scenario Outline (tutorial04) Scenario Outline: Use Blender with Given I put " " in a blender When I switch the blender on Then it should transform into " " Examples: Amphibians | thing | other thing | | Red Tree Frog | mush | | apples | apple juice | Examples: Consumer Electronics | thing | other thing | | iPhone | toxic waste | | Galaxy Nexus | toxic waste | 

Provide the Test Automation¶

# file:features/steps/step_tutorial03.py # ---------------------------------------------------------------------------- # STEPS: # ---------------------------------------------------------------------------- from behave import given, when, then from hamcrest import assert_that, equal_to from blender import Blender @given('I put "" in a blender') def step_given_put_thing_into_blender(context, thing): context.blender = Blender() context.blender.add(thing) @when('I switch the blender on') def step_when_switch_blender_on(context): context.blender.switch_on() @then('it should transform into ""') def step_then_should_transform_into(context, other_thing): assert_that(context.blender.result, equal_to(other_thing)) 

Test automation layer reused from Tutorial 3: Step Parameters .

Provide the Domain Model¶

# file:features/steps/blender.py # ----------------------------------------------------------------------------- # DOMAIN-MODEL: # ----------------------------------------------------------------------------- class Blender(object): TRANSFORMATION_MAP =  "Red Tree Frog": "mush", "apples": "apple juice", "iPhone": "toxic waste", "Galaxy Nexus": "toxic waste", > def __init__(self): self.thing = None self.result = None @classmethod def select_result_for(cls, thing): return cls.TRANSFORMATION_MAP.get(thing, "DIRT") def add(self, thing): self.thing = thing def switch_on(self): self.result = self.select_result_for(self.thing) 

Run the Feature Test¶

When you run the feature file from above (with plain formatting):

$ behave ../features/tutorial04_scenario_outline.feature Feature: Scenario Outline (tutorial04) # ../features/tutorial04_scenario_outline.feature:1 Scenario Outline: Use Blender with Red Tree Frog -- @1.1 Amphibians # ../features/tutorial04_scenario_outline.feature:10 Given I put "Red Tree Frog" in a blender # ../features/steps/step_tutorial03.py:39 When I switch the blender on # ../features/steps/step_tutorial03.py:44 Then it should transform into "mush" # ../features/steps/step_tutorial03.py:48 Scenario Outline: Use Blender with apples -- @1.2 Amphibians # ../features/tutorial04_scenario_outline.feature:11 Given I put "apples" in a blender # ../features/steps/step_tutorial03.py:39 When I switch the blender on # ../features/steps/step_tutorial03.py:44 Then it should transform into "apple juice" # ../features/steps/step_tutorial03.py:48 Scenario Outline: Use Blender with iPhone -- @2.1 Consumer Electronics # ../features/tutorial04_scenario_outline.feature:15 Given I put "iPhone" in a blender # ../features/steps/step_tutorial03.py:39 When I switch the blender on # ../features/steps/step_tutorial03.py:44 Then it should transform into "toxic waste" # ../features/steps/step_tutorial03.py:48 Scenario Outline: Use Blender with Galaxy Nexus -- @2.2 Consumer Electronics # ../features/tutorial04_scenario_outline.feature:16 Given I put "Galaxy Nexus" in a blender # ../features/steps/step_tutorial03.py:39 When I switch the blender on # ../features/steps/step_tutorial03.py:44 Then it should transform into "toxic waste" # ../features/steps/step_tutorial03.py:48 1 feature passed, 0 failed, 0 skipped 4 scenarios passed, 0 failed, 0 skipped 12 steps passed, 0 failed, 0 skipped, 0 undefined Took 0m0.003s

© Copyright 2012-2019 by Jens Engel.
Last updated on 2019-07-14.
Created using Sphinx 1.8.5.