{ "info": { "author": "Colm O'Connor", "author_email": "colm.oconnor.github@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Quality Assurance", "Topic :: Software Development :: Testing" ], "description": "Saddle\n======\n\nSaddle is a black box testing framework built upon python's unittest that\nhelps you write simple, easy to read functional tests for any software.\n\nIt was initially built to test Django applications, but it can be used to\nwrite python tests for any application at all, *written in almost any\nlanguage* (PHP, Java, etc.). It is particularly well suited to testing\nsoftware that is built upon many interacting services.\n\nSaddle is currently EXPERIMENTAL. There will be bugs lurking and APIs may\nchange. However, since few people are using it I will be quick to provide\nsupport and more open to feature requests during this period. It has been\ntested on Ubuntu the most, but should work on Mac OS X and (partially) on\nWindows.\n\nThere are currently modules that will run PostgreSQL, Django, Redis and a\nmock SMTP server (SaddleSMTP), although writing your own module is easy.\nRequests to include new modules are also welcome.\n\n\nGetting Started\n===============\n\nThere is currently one tutorial for Saddle:\n\n* Getting started testing with Saddle and Django, Celery, Redis and Postgresql (INCOMPLETE)\n\nIf you want a tutorial for your stack, drop me a line.\n\n\n\nHow does it work?\n=================\n\nAt the heart of Saddle is the service engine, which runs one or more services\ntogether.\n\nA service is something like postgresql, django, redis, celery or any\nequivalent that is being tested and/or is required for your system to run.\n\nThe service engine is responsible for doing the following before the test\nstarts, (in parallel):\n\n* Preparing & starting services.\n* Installing fixtures (databases, settings files, etc.)\n* Ascertaining service and application readiness.\n\nDuring the test:\n\n* Aggregating service logs and presenting them to the user.\n* Changing the system clock time that the services see as the test requires.\n* Detecting error conditions/services that stop prematurely.\n* 'Snapshotting' and skipping portions of tests to get quicker feedback.\n* Pausing where the user requests it and breaking into IPython shell.\n\nAfter the test has finished:\n\n* Shutting down and cleaning up after the services.\n\n\nSaddle Design\n=============\n\nSaddle was built to accommodate tests that follow the following principles,\nas well as to follow them itself where applicable:\n\n* Loose coupling\n* Fail fast\n* DRY\n* FIRST principles of good tests:\n** Fast\n** Isolated\n** Repeatable\n** Self-verifying\n** Timely\n\n\n\nCaveats and Known issues\n========================\n\n* Libfaketime, which fakes the time has the following issues:\n** Does not work with node.js\n** Does not work correctly with Java\n** Does not work on Windows\n\n* Saddle has not been tested on Windows, Mac OS, BSD or Linux distributions\nother than Ubuntu 14.04.2 LTS (kernel version : 3.13.0-49.81). Please\nreport any issues you have on your specific OS.\n\n* Saddle has been tested with Django version 1.8 but not earlier versions\nand DjangoService likely does not work with them (easy enough to adapt though).\n\n* Hitting ctrl-C before the end can sometimes leave services still alive and\nscrew up the terminal.\n\n* Services that are left still alive on previous test runs are not properly\nkilled before starting again.\n\n* The .saddle directory should be manually cleared each time before running\na test (if faketime is used).\n\n* The stacktrace printed after an exception in a test (before showing ipython)\ndoes not contain the error.\n\n* The code is mossing a lot of docstrings.\n\n* Errors which occur during setUp will not cause test failure immediately due\nto the harness thread continuing until timeout.\n\n* Won't run with nosetests.\n\n* Only works on python 2.\n\n\nThanks\n======\n\nThanks to Wolfgang Hommel for the libfaketime library, which is included\nas part of saddle.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://saddle.readthedocs.org/", "keywords": "functional test harness framework process orchestration selenium", "license": "GPLv3", "maintainer": null, "maintainer_email": null, "name": "saddle", "package_url": "https://pypi.org/project/saddle/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/saddle/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://saddle.readthedocs.org/" }, "release_url": "https://pypi.org/project/saddle/0.1.1/", "requires_dist": null, "requires_python": null, "summary": "Functional testing framework.", "version": "0.1.1" }, "last_serial": 1514880, "releases": { "0.1": [], "0.1.1": [ { "comment_text": "", "digests": { "md5": "40fcc7511b334390a6bebe5e5edd4df9", "sha256": "2d64d7614395384906efe26f259541ec295ec20995d8a5c3d3e6acd78592bd17" }, "downloads": -1, "filename": "saddle-0.1.1.tar.gz", "has_sig": false, "md5_digest": "40fcc7511b334390a6bebe5e5edd4df9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48168, "upload_time": "2015-04-21T16:55:02", "url": "https://files.pythonhosted.org/packages/af/ca/f044f0e96504306b38243d84a428d9a1f36494629de0dd24eb3df49de0de/saddle-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "40fcc7511b334390a6bebe5e5edd4df9", "sha256": "2d64d7614395384906efe26f259541ec295ec20995d8a5c3d3e6acd78592bd17" }, "downloads": -1, "filename": "saddle-0.1.1.tar.gz", "has_sig": false, "md5_digest": "40fcc7511b334390a6bebe5e5edd4df9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48168, "upload_time": "2015-04-21T16:55:02", "url": "https://files.pythonhosted.org/packages/af/ca/f044f0e96504306b38243d84a428d9a1f36494629de0dd24eb3df49de0de/saddle-0.1.1.tar.gz" } ] }