phpbehat

Scenario vs. Scenario Outline


Background:

I'm currently writing behat tests (Mink/Selenium) for a Symfony2 webpage. I have a good deal of examples to go by, and actually writing them should be no problem. The step definitions are already written.

However, in the examples, they some times define a Scenario: and some times a Scenario Outline:

Question:

What is the difference between these two ways of defining a test?


Solution

  • From the official guide:

    Copying and pasting scenarios to use different values can quickly become tedious and repetitive:

    Scenario: Eat 5 out of 12
      Given there are 12 cucumbers
      When I eat 5 cucumbers
      Then I should have 7 cucumbers
    
    Scenario: Eat 5 out of 20
      Given there are 20 cucumbers
      When I eat 5 cucumbers
      Then I should have 15 cucumbers
    

    Scenario Outlines allow us to more concisely express these examples through the use of a template with placeholders

    Scenario Outline: Eating
      Given there are <start> cucumbers
      When I eat <eat> cucumbers
      Then I should have <left> cucumbers
    
      Examples:
        | start | eat | left |
        |  12   |  5  |  7   |
        |  20   |  5  |  15  |
    

    The Scenario Outline steps provide a template which is never directly run. A Scenario Outline is run once for each row in the Examples section beneath it (except for the first header row).

    More in the Writing Features guide.