Getting Started

Create the features directory in your project’s root directory. (Next to manage.py)

features/
    steps/
        your_steps.py
    environment.py
    your-feature.feature

Run python manage.py behave:

$ python manage.py behave
Creating test database for alias 'default'...
Feature: Running tests # features/running-tests.feature:1
  In order to prove that behave-django works
  As the Maintainer
  I want to test running behave against this features directory
  Scenario: The Test                       # features/running-tests.feature:6
    Given this step exists                 # features/steps/running_tests.py:4 0.000s
    When I run "python manage.py behave"   # features/steps/running_tests.py:9 0.000s
    Then I should see the behave tests run # features/steps/running_tests.py:14 0.000s

1 features passed, 0 failed, 0 skipped
1 scenarios passed, 0 failed, 0 skipped
3 steps passed, 0 failed, 0 skipped, 0 undefined
Took.010s
Destroying test database for alias 'default'...

See the environment.py, running-tests.feature and steps/running_tests.py files in the features folder of the project repository for implementation details of this very example. See the folder also for more useful examples.

Alternative folder structure

For larger projects, specifically those that also have other types of tests, it’s recommended to use a more sophisticated folder structure, e.g.

tests/
    acceptance/
        features/
            example.feature
        steps/
            given.py
            then.py
            when.py
        environment.py

Your behave configuration should then look something like this:

[behave]
paths = tests/acceptance
junit_directory = tests/reports
junit = yes

This way you’ll be able to cleanly accommodate unit tests, integration tests, field tests, penetration tests, etc. and test reports in a single tests folder.

Note

The behave docs provide additional helpful information on using behave with Django and various test automation libraries.