Lettuce is a Behavior-Driven Development tool written by Gabriel Falcão G. de Moura


install it

user@machine:~$ [sudo] pip install lettuce

describe your first feature

Feature: Manipulate strings
  In order to have some fun
  As a programming beginner
  I want to manipulate strings

  Scenario: Uppercased strings
    Given I have the string "lettuce leaves"
    When I put it in upper case
    Then I see the string is "LETTUCE LEAVES"

define its steps

>>> from lettuce import *
>>> @step('I have the string "(.*)"')
... def have_the_string(step, string):
...     world.string = string
>>> @step
... def i_put_it_in_upper_case(step):
...     world.string = world.string.upper()
>>> @step
... def see_the_string_is(step, expected):
...     '''I see the string is "(.*)"'''
...     assert world.string == expected, \
...         "Got %s" % world.string

watch it pass

user@machine:~/Projects/my-project$ lettuce features/

getting involved !

github project page

Fork it, propose features, explore the code



issue tracker.



Development guidelines


support lettuce development

hands on!

Is this your first experience with Lettuce ?!?

So, why don’t you go straight to the quick start tutorial ?!


what is Lettuce, and what it does



reference and concepts


make your own salad


Disclaimer on unstable features you should NOT rely on.

For instance use the features step.behave_as and the xunit XML output are unstable and untested.

Lettuce is a software for testing other software, but I’ve been receiving some contributions of new features that are coming without proper tests.

These contributions have to be rewritten with proper tests, so that they won’t break so often, but they are a current source of issues in the bug tracker.

So until someone contributes with unit and functional tests for those features, or I find some time to do it myself, you should avoid relying on them.

Sincerely, Gabriel Falcão