Metadata-Version: 1.0
Name: Behaviour
Version: 0.1a4
Summary: Behaviour Driven Development in Python
Home-page: UNKNOWN
Author: Mark Dancer
Author-email: mark.dancer@pobox.com
License: UNKNOWN
Description: 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:
        
        1. A developer starts using a unit testing framework (like unittest.py).
        2. The developer becomes more confident in the quality of his work.
        3. They realize that writing the tests first lets them concentrate on writing the code they needs.
        4. The developer notices that the tests document the code.
        5. Writing tests first helps the developer to design the API for their code.
        6. The developer realizes that TDD is about defining behaviour rather than testing.
        7. 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:
        
        - `Introducing BDD`_ by Dan North;
        - `A New Look at Test-Driven Development`_ by Dave Astels;
        
        .. _Introducing BDD: http://dannorth.net/introducing-bdd
        .. _A New Look at Test-Driven Development: http://blog.daveastels.com/files/BDD_Intro.pdf
        
        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.
        
        
Keywords: behaviour driven development design unit test testing unittest
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
Classifier: Operating System :: OS Independent
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: Unix
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development :: Testing
