{ "info": { "author": "Mark Dancer", "author_email": "mark.dancer@pobox.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: OS Independent", "Operating System :: Unix", "Programming Language :: Python", "Topic :: Software Development :: Testing" ], "description": "Behaviour provides a language suitable for Behaviour Driven Development (BDD), as opposed to\npost-coding unit testing. It operates as a facade over Python's unit testing framework.\n\nWhat is Behaviour Driven Development?\n-------------------------------------\n\nBDD is a derivative of Test Driven Development (TDD), evolving out of the observed adoption-life-cycle\nfor TDD:\n\n1. A developer starts using a unit testing framework (like unittest.py).\n2. The developer becomes more confident in the quality of his work.\n3. They realize that writing the tests first lets them concentrate on writing the code they needs.\n4. The developer notices that the tests document the code.\n5. Writing tests first helps the developer to design the API for their code.\n6. The developer realizes that TDD is about defining behaviour rather than testing.\n7. The developer adopts mocking as a fundamental approach to support component interactions.\n\nBDD supports the progression through that life-cycle, particularly the last three steps.\n\nBDD supports this transition is by providing an appropriate language. Frameworks for BDD talk about\neither specifications (e.g., RSpec for Ruby, NSpec for C#.NET) or behaviours (e.g., JBehave for Java,\nNBehave for .NET).\n\nFor more information on BDD, see:\n\n- `Introducing BDD`_ by Dan North;\n- `A New Look at Test-Driven Development`_ by Dave Astels;\n\n.. _Introducing BDD: http://dannorth.net/introducing-bdd\n.. _A New Look at Test-Driven Development: http://blog.daveastels.com/files/BDD_Intro.pdf\n\nWhat does Behaviour do for Me?\n------------------------------\n\nBehaviour allows you to say things like: ::\n\n\tclass verifyUserSpecification( behaviour.Behaviour ):\n\n\t\tdef setUp( self ):\n\n\t\t\tself.user = User( \"Mark Dancer\" )\n\n\t\tdef verifyInitialUserNameIsNameInConstructor( self ):\n\n\t\t\tself.shouldBeEqual( self.user.name, \"Mark Dancer\" )\n\n\t\tdef verifyInitialUserHasNoLanguages( self ):\n\n\t\t\tself.shouldBeEmpty( self.user.languages )\n\nThis has no more expressive power than what is offered by unittest: ::\n\n\tclass testUser( unittest.TestCase ):\n\n\t\tdef setUp( self ):\n\n\t\t\tself.user = User( \"Mark Dancer \")\n\n\t\tdef testName( self ):\n\n\t\t\tself.failUnlessEqual( self.user.name, \"Mark Dancer\" )\n\n\t\tdef testLanguages( self ):\n\n\t\t\tself.failUnless( self.user.languages = [] )\n\nWhat it does offer is an alternative set of semantics.\n\nWith the semantics of unittest, we are testing a piece of code that\nwe have already written.\n\nWith Behaviour, we are writing a specification for the piece of code we are\nabout to write. It is much clearer with BDD that the specification is\nwritten before the code.", "description_content_type": null, "docs_url": "https://pythonhosted.org/Behaviour/", "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "UNKNOWN", "keywords": "behaviour driven development design unit test testing unittest", "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "Behaviour", "package_url": "https://pypi.org/project/Behaviour/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/Behaviour/", "project_urls": { "Download": "UNKNOWN", "Homepage": "UNKNOWN" }, "release_url": "https://pypi.org/project/Behaviour/0.1a4/", "requires_dist": null, "requires_python": null, "summary": "Behaviour Driven Development in Python", "version": "0.1a4" }, "last_serial": 783842, "releases": { "0.1a2": [ { "comment_text": "", "digests": { "md5": "4e125157c6b961264e7470dcf7bc3595", "sha256": "85fb5bfeb2cfdebb0611c7da473854cbc7521938975b1f1bb3fc83296eb5153f" }, "downloads": -1, "filename": "Behaviour-0.1a2-py2.5.egg", "has_sig": false, "md5_digest": "4e125157c6b961264e7470dcf7bc3595", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 30863, "upload_time": "2007-12-11T13:01:23", "url": "https://files.pythonhosted.org/packages/09/79/9cfb1d3e44afca4a33eac5c12c8828d69e5fd8e9f36cadfd0bde227ce083/Behaviour-0.1a2-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "f8b0c238222cf082858cd59fb24117ad", "sha256": "5e1b66c28914714b9f04d24abd4e0c6cba78711dc36b1f617039097cfd816610" }, "downloads": -1, "filename": "Behaviour-0.1a2.tar.gz", "has_sig": false, "md5_digest": "f8b0c238222cf082858cd59fb24117ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16105, "upload_time": "2007-12-11T13:01:19", "url": "https://files.pythonhosted.org/packages/c4/31/19716abd12e40192092160db5c0fb66e6642fffc79aa947d88c0861e881c/Behaviour-0.1a2.tar.gz" } ], "0.1a3": [ { "comment_text": "", "digests": { "md5": "45ee5bbe58cd24d4c9e5e17d74ecbaa5", "sha256": "85ddc51fe98dca56df2f46d9b02e570f46507651cbf6dd5b1f3600a28c6d1e6c" }, "downloads": -1, "filename": "Behaviour-0.1a3-py2.5.egg", "has_sig": false, "md5_digest": "45ee5bbe58cd24d4c9e5e17d74ecbaa5", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 35476, "upload_time": "2007-12-12T13:04:23", "url": "https://files.pythonhosted.org/packages/44/eb/0cd7f3420940e8a8c3d9c66f6bf72b608b796810da8d0bf3d77051495652/Behaviour-0.1a3-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "e30130cabe83d6e01c5cc74a50f1f6ec", "sha256": "bec71392e9acd587ed9e6a630f3fe7d7fdd2a8f3c42ca7f0b6e250573ae4d8be" }, "downloads": -1, "filename": "Behaviour-0.1a3.tar.gz", "has_sig": false, "md5_digest": "e30130cabe83d6e01c5cc74a50f1f6ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32682, "upload_time": "2007-12-12T13:04:15", "url": "https://files.pythonhosted.org/packages/c8/bf/9d9c41161972d98627c89b324cbfa4ae0dd93ff1e2e0adc12b5e8e121505/Behaviour-0.1a3.tar.gz" } ], "0.1a4": [ { "comment_text": "", "digests": { "md5": "b01953165ff1b2ab09e67ee2cef8e112", "sha256": "4df17b2d18f4afde839d462a4718364b800b68856b7393449982bcc82bbf6d9e" }, "downloads": -1, "filename": "Behaviour-0.1a4-py2.5.egg", "has_sig": false, "md5_digest": "b01953165ff1b2ab09e67ee2cef8e112", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 46016, "upload_time": "2007-12-22T22:48:23", "url": "https://files.pythonhosted.org/packages/68/06/b3dc8aebacd67451e056b2f40bdda989d523c0b98864f69942e159b9724c/Behaviour-0.1a4-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "b3ea2a873f40f1c95150abb9947cc4e4", "sha256": "4099f9f7e06f0be554c3fde11000d0e55bd82576cd6cac267eb504032e987eb8" }, "downloads": -1, "filename": "Behaviour-0.1a4.tar.gz", "has_sig": false, "md5_digest": "b3ea2a873f40f1c95150abb9947cc4e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29448, "upload_time": "2007-12-22T22:48:14", "url": "https://files.pythonhosted.org/packages/59/ed/5075dee1e932d7ac493bf85b2e11e5923fb422836aa7730314ab80d1f825/Behaviour-0.1a4.tar.gz" }, { "comment_text": "", "digests": { "md5": "546de2b06eeee22d872c55eb09283eff", "sha256": "995efd251a1f073efd48bbaad53e1cc08411cd1f31e2ffc9c54ae08b892c3bec" }, "downloads": -1, "filename": "Behaviour-0.1a4.zip", "has_sig": false, "md5_digest": "546de2b06eeee22d872c55eb09283eff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50246, "upload_time": "2007-12-22T22:48:18", "url": "https://files.pythonhosted.org/packages/35/23/3b5b8116652b4719dc9aa0fabd9b70494578f3de720a8f3682b98d9080e8/Behaviour-0.1a4.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b01953165ff1b2ab09e67ee2cef8e112", "sha256": "4df17b2d18f4afde839d462a4718364b800b68856b7393449982bcc82bbf6d9e" }, "downloads": -1, "filename": "Behaviour-0.1a4-py2.5.egg", "has_sig": false, "md5_digest": "b01953165ff1b2ab09e67ee2cef8e112", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 46016, "upload_time": "2007-12-22T22:48:23", "url": "https://files.pythonhosted.org/packages/68/06/b3dc8aebacd67451e056b2f40bdda989d523c0b98864f69942e159b9724c/Behaviour-0.1a4-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "b3ea2a873f40f1c95150abb9947cc4e4", "sha256": "4099f9f7e06f0be554c3fde11000d0e55bd82576cd6cac267eb504032e987eb8" }, "downloads": -1, "filename": "Behaviour-0.1a4.tar.gz", "has_sig": false, "md5_digest": "b3ea2a873f40f1c95150abb9947cc4e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29448, "upload_time": "2007-12-22T22:48:14", "url": "https://files.pythonhosted.org/packages/59/ed/5075dee1e932d7ac493bf85b2e11e5923fb422836aa7730314ab80d1f825/Behaviour-0.1a4.tar.gz" }, { "comment_text": "", "digests": { "md5": "546de2b06eeee22d872c55eb09283eff", "sha256": "995efd251a1f073efd48bbaad53e1cc08411cd1f31e2ffc9c54ae08b892c3bec" }, "downloads": -1, "filename": "Behaviour-0.1a4.zip", "has_sig": false, "md5_digest": "546de2b06eeee22d872c55eb09283eff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50246, "upload_time": "2007-12-22T22:48:18", "url": "https://files.pythonhosted.org/packages/35/23/3b5b8116652b4719dc9aa0fabd9b70494578f3de720a8f3682b98d9080e8/Behaviour-0.1a4.zip" } ] }