{ "info": { "author": "drm from melp.nl, packaged for reuse by James Pic", "author_email": "jamespic@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Package for this snippet:\nhttp://melp.nl/2011/02/phpunit-style-dataprovider-in-python-unit-test/\n\nInstall::\n\n pip install unittest-data-provider\n\nImport::\n\n import unittest\n from unittest_data_provider import data_provider\n\nYou can then use data_provider without having to stick this snippet somewhere\n...\n\nThanks drm !\n\nOriginal blog post by drm pasted here in case the original link goes down\n=========================================================================\n\nPHPUnit has a handy feature with which you can provide testdata to your tests.\nThis is called a data provider, and is implemented by annotating a test with\n@dataProvider methodName. Python\u2019s unittest module doesn\u2019t seem to have such a\nfeature.\n\nPHPUnit\u2019s version\n-----------------\n\nThe data provider returns a two-dimensional array of test arguments. For\nexample::\n\n class CssParserTest extends PHPUnit_Framework_TestCase {\n function setUp() {\n $this->parser = new CssParser();\n }\n \n /**\n * @dataProvider cssColors\n */\n function testParseColor($color, $notation) {\n $this->assertEquals($color, $this->parser->parseColor($notation));\n }\n \n \n function cssColors() {\n return array(\n array(array(0, 0, 0), '#000'),\n array(array(0, 0, 0), '#000000'),\n array(array(0, 0, 0), 'rgb(0, 0, 0)')\n array(array(0, 0, 0), 'black')\n );\n }\n }\n\nRunning this test would call the testParseColor() test 4 times, with each of\nthe arrays returned by cssColors() as the arguments.\n\nPython: providing test data using a decorator\n---------------------------------------------\n\nWhile writing tests for some Python code, I discovered that Python\u2019s unittest\ndoesn\u2019t seem to have such a feature. So I implemented my own, using a\ndecorator::\n\n def data_provider(fn_data_provider):\n \"\"\"Data provider decorator, allows another callable to provide the data for the test\"\"\"\n def test_decorator(fn):\n def repl(self, *args):\n for i in fn_data_provider():\n try:\n fn(self, *i)\n except AssertionError:\n print \"Assertion error caught with data set \", i\n raise\n return repl\n return test_decorator\n\nExample usage::\n\n class CssParserTest:\n def setUp(self):\n self.parser = CssColor()\n \n colors = lambda: (\n ( (0, 0, 0), '#000' ),\n ( (0, 0, 0), '#000000' ),\n ( (0, 0, 0), 'rgb(0, 0, 0)' ),\n ( (0, 0, 0), 'black' )\n )\n \n @data_provider(colors):\n def test_parse_color(self, color, notation):\n self.assertEquals(color, self.parser.parse_color(notation))\n\nSuggestions of alternatives are greatly appreciated, by the way.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/yourlabs/unittest-data-provider", "keywords": "unittest dataprovider", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "unittest-data-provider", "package_url": "https://pypi.org/project/unittest-data-provider/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/unittest-data-provider/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/yourlabs/unittest-data-provider" }, "release_url": "https://pypi.org/project/unittest-data-provider/1.0.1/", "requires_dist": null, "requires_python": null, "summary": "PHPUnit-like @dataprovider decorator for unittest", "version": "1.0.1" }, "last_serial": 801236, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "b5bb923a3674c082c5102fa257c2f116", "sha256": "5c2d9bca2cd74ebdad5bfd4bf99750bcc0fd86e66b43b896f1e73700f5d35be4" }, "downloads": -1, "filename": "unittest-data-provider-1.0.0.tar.gz", "has_sig": false, "md5_digest": "b5bb923a3674c082c5102fa257c2f116", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2797, "upload_time": "2012-09-13T11:42:03", "url": "https://files.pythonhosted.org/packages/54/6f/8f70173f1313b5960414764602ad6d321c1df09390511c7576b66f09b94b/unittest-data-provider-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "922f0b805f2100fbedfe9cbece1226d8", "sha256": "86bc7fb6608c2570aeedadea346fe3034afc940807dd7519e95e5dbc899ac2be" }, "downloads": -1, "filename": "unittest-data-provider-1.0.1.tar.gz", "has_sig": false, "md5_digest": "922f0b805f2100fbedfe9cbece1226d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2859, "upload_time": "2013-05-18T10:14:14", "url": "https://files.pythonhosted.org/packages/c0/8e/b95d91f4bcd2b5f02878d284b74cabbc553f30b131571ba699a4f1a2f99d/unittest-data-provider-1.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "922f0b805f2100fbedfe9cbece1226d8", "sha256": "86bc7fb6608c2570aeedadea346fe3034afc940807dd7519e95e5dbc899ac2be" }, "downloads": -1, "filename": "unittest-data-provider-1.0.1.tar.gz", "has_sig": false, "md5_digest": "922f0b805f2100fbedfe9cbece1226d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2859, "upload_time": "2013-05-18T10:14:14", "url": "https://files.pythonhosted.org/packages/c0/8e/b95d91f4bcd2b5f02878d284b74cabbc553f30b131571ba699a4f1a2f99d/unittest-data-provider-1.0.1.tar.gz" } ] }