Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Behat

From MoodleDocs

Note: This page is a work-in-progress. Feedback and suggested improvements are welcome. Please join the discussion on moodle.org or use the page comments.


This document is a work in progress (STABLE team week off project) and it should not be taken into account for nothing out of this scope nor nothing official.

Behat is a Behaviour Driven Development (BDD) framework

Example

The expected behaviours are specified as scenarios.

Basic scenarios

   Scenario: Login as an existing user
     Given I am on "login/index.php"
     When I fill in "username" with "admin"
     And I fill in "password" with "moodle"
     And I press "loginbtn"
     Then I should see "Moodle 101: Course Name"
   Scenario: Login as an unexisting user
     Given I am on "login/index.php"
     When I fill in "username" with "adminasdasd"
     And I fill in "password" with "moodlesdfasdf"
     And I press "loginbtn"
     Then I should see "Invalid login, please try again"

Complex scenario

The aim of this project is to be able to define scenarios like this. Note the quoted strings are received as variables by the steps definitions which will process them.

 Scenario: A teacher adds a discussion
   Given I am logged as a "teacher"
   And I go to a course
   And I create a "forum" activity
   And I view the "forum" activity    # The step definition class will keep a reference to the lasts steps
   When I add a "forum_discussion" filling the fields "subject,message[text]" with "I'm the user subject,Dealing with \, split"    # Wrapper step, it will redirect the petition to a "forum_discussion" method
   Then I should see "Discussion"
   And I should see "Subject"
   And I should see "I'm the user subject"

In order to be able to process the "logged as a $roleshortname" or the "a course" statements a config file with test data must be set (http://docs.behat.org/guides/7.config.html)

Contexts

Each step are processed in a step definition, which are defined in "context" classes

Contexts Organization

The Features context class is split in different context to ease the step definitions location.