Using Cucumber with Expertiza

From Expertiza_Wiki
Revision as of 19:45, 8 February 2013 by Pmocampo (talk | contribs)
Jump to navigation Jump to search

Cucumber Stack

Features

Features provide a brief description about the functionality being tested.

In Expertiza, features are stored in /features. Within this folder you can find several sub-folders such as /admin, /instructor, and /student. This structure is to organize tests that apply to specific roles.

Each .feature file tests a specific aspect of the system, such as an Administrator's ability to Impersonate a User. (/features/admin/impersonate_user.feature) A feature is written in an explanatory syntax called Gherkin. For the Impersonate User feature, a feature would be described as.

    Feature: Impersonate User
        As an Administrator
        I should be able to impersonate users

Scenarios

Each feature file can contain multiple scenarios. This is to test the same feature in different ways using the Given-When-Then structure. For example. An administrator should be able to impersonate an existing student, but he should not be able to impersonate a student that doesn't exist. In the case of an instructor, he should only be able to impersonate students that are in his class.

    Scenario: Impersonate a student as an Administrator
        Given an Administrator named "cucumber" exists
        And a Student named "impersonated_account" created by "cucumber" exists
        When I log in as "cucumber"
        And I click the menu link "Impersonate User"
        And I fill in "user_name" with "impersonated_account"
        When I press "Impersonate"
        Then I should be logged in as "impersonated_account"	

    Scenario: Impersonate a student that does not exist
        Given an Administrator named "cucumber" exists
        When I log in as "cucumber"
        And I click the menu link "Impersonate User"
        And I fill in "user_name" with "impersonated_account"
        When I press "Impersonate"
        Then I should see "No user exists with the name 'impersonated_account'"

Gherkin provides multiple keywords to describe steps in a scenario such as:

  • Feature
  • Background
  • Scenario
  • Given
  • When
  • Then
  • And
  • But
  • Scenario Outline
  • Examples

Step Definitions

Running Cucumber

Setup

Setting up seeds Bundle install Rake db:test:prepare Cucumber decorators

Running Tests

Run all features Run a single feature Run a single scenario Undefined steps Sample output and what it means