{ "info": { "author": "Rudy Lattae", "author_email": "rudylattae@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 7 - Inactive", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: Microsoft :: Windows", "Programming Language :: Python", "Programming Language :: Python :: 2.7" ], "description": "Overview\n========\n\n**NOTE**\n\nSpecit is **no longer actively developed**. It has been replaced by:\n\n**compare**: for the pluggable `expect` syntax\n\n- package: http://pypi.python.org/pypi/compare/\n- source: https://github.com/rudylattae/compare/\n- docs: http://packages.python.org/compare/\n\n**checkit**: enables `nose` to detect and run test cases defined using BDD style \"describe\" and \"it\"\n\n- package: http://pypi.python.org/pypi/checkit/\n- source: https://bitbucket.org/rudylattae/checkit/\n\n\n-----\n\n\nSpecit is a minimalistic tool to assist developers in creating \nand validating executable specifications for python software. It \naims to:\n\n1. Provide a readable, pythonic syntax for defining expectations in your example specifications.\n2. Provide a simple tool for validating your specifications. \n\nTo this end, specit provides two components to simplify your \nwork with specs. The **expect** construct allows you to indicate \nverifyable expectations of your software. It is a replacement for\nthe \"self.assert...\" syntax. The **specit** command uses \n`Nose `_ to \nvalidate your specifications.\n\n\nFeatures\n--------\n\n- uses nose for discovering and running specs\n- provides a base set of matchers for defining expectations\n- easy to extend with custom matchers\n\n\nRequirements\n------------\n\nAll the requirements for using specit are auto-installed if you \nuse pip or easy_install. Here they are:\n\n- `Nose `_ \n\n\nInstallation\n------------\n\nThe easiest way to install specit is with ``pip install spectit`` \nor with ``easy_install specit``. Alternatively, you may \n`download `_ the \nsource package from PyPI, extract it and install it using \n``python setup.py install``.\n\n\nWhat you get\n------------\n\nWhen you install the package, you get two shiny components that \nmay help you achieve the goals above.\n\n**\"expect\"**, is the grammar component. It provides a construct with \nextensible matchers that enables you to describe the expected \nbehaviour of your software using a pythonic BDD manner. Again, this \nhelps you maintain your flow of thought without succumbing to \ntest-focused non-pythonic distrations like \"self.assertEqual(s)...\", \n\"self.assertTrue\", etc.\n\n**\"specit\"**, is the commandline component. It uses nose to discover \nand execute specifications using flexible matching rules so that you \nare not limited to using distracting unittest (test focused) constructs \nlike \"def test...\" or name your files \"test...py\".\n\nHere is a trivial example of the clarity you gain when you \nemploy the \"expect\" construct in your specs::\n\n > cat greeting.py\n def greet():\n return 'Hello you'\n \n > cat greeting_specs.py\n from specit import expect\n from greeting import greet\n \n expect(greet).to_return('Hello you')\n\nEven more iteresting is the fact that you no longer have to \nsubject yourself to the unnecessary cruft needed for unittest \ntest cases. You can now create a spec like this::\n\n > cat cool_specs.py\n class DescribeCool(object):\n \n def it_is_cool(self):\n pass\n\nOr even::\n\n > cat awesome_specs.py\n class MyAwesomeSpecs():\n \n def should_always_smile(self):\n pass\n\nFinally, when you want to validate your software against the sepcs, \nsimply run the commandline tool \"specit\" in your project \ndirectory like so::\n\n > specit\n ..\n ----------------------------------------------------------------------\n Ran 2 tests in 0.006s\n\n OK\n\n\nFeedback\n--------\n\nI welcome any questions or feedback about bugs and suggestions on how to \nimprove specit. Let me know what you think about specit. I am on twitter \n`@RudyLattae `_ . I appreciate constructive \ncriticsms or high fives :)\n\nDo you have suggestions for improvement? Then please create an \n`issue `_ with details \nof what you would like to see. I'll take a look at it and work with you to either kill \nthe idea or implement it.\n\n\n=========\nChangelog\n=========\n\n0.1.2a (2010-12-08)\n=====================\n\n* First public release\n\n====\nTODO\n====\n\n- Core matchers: \n - to_contain\n - to_be_truthy\n - to_be_falsy\n\n- Provide better documentation and package information\n\n- How to contribute / developer setup\n\n- package url?\n\n- distutils, setuptools or distribute?", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/rudylattae/specit", "keywords": "Specification,BDD,TDD", "license": "Simplified BSD", "maintainer": null, "maintainer_email": null, "name": "specit", "package_url": "https://pypi.org/project/specit/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/specit/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://bitbucket.org/rudylattae/specit" }, "release_url": "https://pypi.org/project/specit/0.2.1z/", "requires_dist": null, "requires_python": null, "summary": "Create and run executable specifications with Pythonic BDD style grammar", "version": "0.2.1z" }, "last_serial": 799867, "releases": { "0.1.2a": [ { "comment_text": "", "digests": { "md5": "d5eabfb0e86ffda8e294e15bc9fa8f05", "sha256": "4eb2c85592f734fd6e8e7d079f692532df49d0abf8bb866828e1220ee419ea5b" }, "downloads": -1, "filename": "specit-0.1.2a.win32.exe", "has_sig": false, "md5_digest": "d5eabfb0e86ffda8e294e15bc9fa8f05", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 204985, "upload_time": "2010-12-08T11:08:36", "url": "https://files.pythonhosted.org/packages/98/93/7737fe6f14193ab9cd7969a906fd99fd7c56caea37547f3d28187562f60a/specit-0.1.2a.win32.exe" }, { "comment_text": "", "digests": { "md5": "52ec7cadf990c94fca0ba4e21cda3988", "sha256": "4aa650f8447edc21100d6ff2197afcb01e3f487f8b4fbe88f903bea98fc80290" }, "downloads": -1, "filename": "specit-0.1.2a.zip", "has_sig": false, "md5_digest": "52ec7cadf990c94fca0ba4e21cda3988", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7943, "upload_time": "2010-12-08T11:08:32", "url": "https://files.pythonhosted.org/packages/ea/3a/318f29588ce142a741367d3744285c28e658e812ba0f51afec797d343fd8/specit-0.1.2a.zip" } ], "0.2.1z": [ { "comment_text": "", "digests": { "md5": "50bee8ce0000108990adf19eafc987f3", "sha256": "1f1edfeebf24f5d0845cbddc0db60d63050d74b7b69abf3bea5f61e322b1ab55" }, "downloads": -1, "filename": "specit-0.2.1z.zip", "has_sig": false, "md5_digest": "50bee8ce0000108990adf19eafc987f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17747, "upload_time": "2011-10-17T09:36:45", "url": "https://files.pythonhosted.org/packages/94/0f/f587d484d73ebb7c60512b158f0abd92fbe16f65f6e12a89c75cd85e30fb/specit-0.2.1z.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "50bee8ce0000108990adf19eafc987f3", "sha256": "1f1edfeebf24f5d0845cbddc0db60d63050d74b7b69abf3bea5f61e322b1ab55" }, "downloads": -1, "filename": "specit-0.2.1z.zip", "has_sig": false, "md5_digest": "50bee8ce0000108990adf19eafc987f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17747, "upload_time": "2011-10-17T09:36:45", "url": "https://files.pythonhosted.org/packages/94/0f/f587d484d73ebb7c60512b158f0abd92fbe16f65f6e12a89c75cd85e30fb/specit-0.2.1z.zip" } ] }