Behaviour Driven Development in Python
Behaviour provides a language suitable for Behaviour Driven Development (BDD), as opposed to post-coding unit testing. It operates as a facade over Python’s unit testing framework.
What is Behaviour Driven Development?
BDD is a derivative of Test Driven Development (TDD), evolving out of the observed adoption-life-cycle for TDD:
- A developer starts using a unit testing framework (like unittest.py).
- The developer becomes more confident in the quality of his work.
- They realize that writing the tests first lets them concentrate on writing the code they needs.
- The developer notices that the tests document the code.
- Writing tests first helps the developer to design the API for their code.
- The developer realizes that TDD is about defining behaviour rather than testing.
- The developer adopts mocking as a fundamental approach to support component interactions.
BDD supports the progression through that life-cycle, particularly the last three steps.
BDD supports this transition is by providing an appropriate language. Frameworks for BDD talk about either specifications (e.g., RSpec for Ruby, NSpec for C#.NET) or behaviours (e.g., JBehave for Java, NBehave for .NET).
For more information on BDD, see:
What does Behaviour do for Me?
Behaviour allows you to say things like:
class verifyUserSpecification( behaviour.Behaviour ): def setUp( self ): self.user = User( "Mark Dancer" ) def verifyInitialUserNameIsNameInConstructor( self ): self.shouldBeEqual( self.user.name, "Mark Dancer" ) def verifyInitialUserHasNoLanguages( self ): self.shouldBeEmpty( self.user.languages )
This has no more expressive power than what is offered by unittest:
class testUser( unittest.TestCase ): def setUp( self ): self.user = User( "Mark Dancer ") def testName( self ): self.failUnlessEqual( self.user.name, "Mark Dancer" ) def testLanguages( self ): self.failUnless( self.user.languages =  )
What it does offer is an alternative set of semantics.
With the semantics of unittest, we are testing a piece of code that we have already written.
With Behaviour, we are writing a specification for the piece of code we are about to write. It is much clearer with BDD that the specification is written before the code.
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size Behaviour-0.1a4-py2.5.egg (46.0 kB)||File type Egg||Python version 2.5||Upload date||Hashes View|
|Filename, size Behaviour-0.1a4.tar.gz (29.4 kB)||File type Source||Python version None||Upload date||Hashes View|
|Filename, size Behaviour-0.1a4.zip (50.2 kB)||File type Source||Python version None||Upload date||Hashes View|