{ "info": { "author": "podhmo", "author_email": "", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "evilunit\n========================================\n\nfeatures\n\n- shortcuts\n- parameterized\n- nested\n\nshortcuts\n----------------------------------------\n\nthis is tiresome.\n\n.. code:: python\n\n import unittest\n\n class Tests(unittest.TestCase):\n def _getTarget(self):\n from foo.bar import boo\n return boo\n\n def _callFUT(self, *args, **kwargs):\n self._getTarget()(*args, **kwargs)\n\n def test_it(self):\n params = object()\n result = self._callFUT(params)\n self.assertEqual(result, params)\n\n\nshortcuts decorator\n\n- test_target -- adding _getTarget(), _makeOne() methods\n- test_function -- adding _getTarget(), _callFUT() methods\n\n\n.. code:: python\n\n import unittest\n from evilunit import test_function\n\n @test_function(\"foo.bar:boo\")\n class Tests(unittest.TestCase):\n def test_it(self):\n params = object()\n result = self._callFUT(params)\n self.assertEqual(result, params)\n\n\n\nparameterized\n----------------------------------------\n\n.. code:: python\n\n import unittest\n from evilunit import NestedTest, nested_test_compile\n\n class Tests(unittest.TestCase):\n def _callFUT(self, x, y):\n return x + y\n\n @paramaterized([\n (1, 2, 3),\n (1, 1, 2),\n (1, 0, 1),\n (2, 3, 5),\n (4, 4, 8)\n ])\n def _test_add(self, x, y, expected):\n \"\"\"adding number\"\"\"\n result = self._callFUT(x, y)\n self.assertEqual(result, expected)\n\n @classmethod\n def tearDownClass(cls):\n count_of_test_method = sum(1 for k, v in cls.__dict__.items() if k.startswith(\"test_\") and callable(v))\n assert count_of_test_method == 5\n\n\nnested\n----------------------------------------\n\n.. code:: python\n\n import unittest\n from evilunit import NestedTest, nested_test_compile\n\n\n L = []\n\n\n @nested_test_compile\n class ToplevelTest(NestedTest):\n @classmethod\n def setUpClass(cls):\n assert issubclass(cls, unittest.TestCase)\n L.append(\"t1\")\n\n def setUp(self):\n assert isinstance(self, unittest.TestCase)\n L.append(\"t2\")\n\n def test_it(self):\n assert isinstance(self, unittest.TestCase)\n L.append(\"t3\")\n self.assertEqual(L, [\"t1\", \"t2\", \"t3\"])\n\n def tearDown(self):\n assert isinstance(self, unittest.TestCase)\n global L\n L = []\n\n class Child(NestedTest):\n @classmethod\n def setUpClass(cls):\n assert issubclass(cls, unittest.TestCase)\n L.append(\"m1\")\n\n def setUp(self):\n assert isinstance(self, unittest.TestCase)\n L.append(\"m2\")\n\n def test_it(self):\n assert isinstance(self, unittest.TestCase)\n L.append(\"m3\")\n self.assertEqual(L, [\"t1\", \"m1\", \"t2\", \"m2\", \"m3\"])\n\n class GrandChild(NestedTest):\n @classmethod\n def setUpClass(cls):\n assert issubclass(cls, unittest.TestCase)\n L.append(\"n1\")\n\n def setUp(self):\n assert isinstance(self, unittest.TestCase)\n L.append(\"n2\")\n\n def test_it(self):\n assert isinstance(self, unittest.TestCase)\n L.append(\"n3\")\n self.assertEqual(L, [\"t1\", \"m1\", \"n1\", \"t2\", \"m2\", \"n2\", \"n3\"])\n\n class Child2(NestedTest):\n @classmethod\n def setUpClass(cls):\n assert issubclass(cls, unittest.TestCase)\n L.append(\"o1\")\n\n def setUp(self):\n assert isinstance(self, unittest.TestCase)\n L.append(\"o2\")\n\n def test_it(self):\n assert isinstance(self, unittest.TestCase)\n L.append(\"o3\")\n self.assertEqual(L, [\"t1\", \"o1\", \"t2\", \"o2\", \"o3\"])\n\n\n0.1.1:\n- fix if fixture is undefined in child class parent class's method is not called.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/podhmo/evilunit", "keywords": "unittest,test", "license": "", "maintainer": "", "maintainer_email": "", "name": "evilunit", "package_url": "https://pypi.org/project/evilunit/", "platform": "", "project_url": "https://pypi.org/project/evilunit/", "project_urls": { "Homepage": "https://github.com/podhmo/evilunit" }, "release_url": "https://pypi.org/project/evilunit/0.2.1/", "requires_dist": [ "pytest ; extra == 'testing'", "flake8 ; extra == 'testing'", "black ; extra == 'testing'" ], "requires_python": "", "summary": "evil parts of unittest", "version": "0.2.1", "yanked": false, "yanked_reason": null }, "last_serial": 6052018, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "dfdf0096b5d0de9425ca7489b7989a61", "sha256": "33139d2caec29d12f191db73a57f16f9a63760885aba67459e0dc3bddf7904b9" }, "downloads": -1, "filename": "evilunit-0.1.tar.gz", "has_sig": false, "md5_digest": "dfdf0096b5d0de9425ca7489b7989a61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5224, "upload_time": "2014-12-06T12:48:08", "upload_time_iso_8601": "2014-12-06T12:48:08.449512Z", "url": "https://files.pythonhosted.org/packages/4b/a8/03d57a78fad49adea4c960f7f69a3691ded03b56d29b31b870532f361d4a/evilunit-0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "c3941be93c905e060fbedac1811aeeff", "sha256": "af092de7555bb1f301569b9e1b853594acb07bd9da0a7c0014ccefee517458d5" }, "downloads": -1, "filename": "evilunit-0.1.1.tar.gz", "has_sig": false, "md5_digest": "c3941be93c905e060fbedac1811aeeff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5277, "upload_time": "2014-12-08T22:21:01", "upload_time_iso_8601": "2014-12-08T22:21:01.257172Z", "url": "https://files.pythonhosted.org/packages/8f/bf/5c98bb711007b739be37cdf8423acf83499928c1740b86117c6482c452c2/evilunit-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "493fec05e9d786953d4d39339f04a669", "sha256": "d9d8f76141d68aada174d8299afea4b0512a0f8fe4eb5301eb9af5280a5e58f4" }, "downloads": -1, "filename": "evilunit-0.1.2.tar.gz", "has_sig": false, "md5_digest": "493fec05e9d786953d4d39339f04a669", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5286, "upload_time": "2015-02-11T13:50:42", "upload_time_iso_8601": "2015-02-11T13:50:42.931528Z", "url": "https://files.pythonhosted.org/packages/8a/aa/7ef036f7a18df7cff8428e092bf06f5c30e24e0f805215b815112fd9adc2/evilunit-0.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "6b629a224bc75a9d2a629987e37a0da6", "sha256": "f3acd2cc05cae4ae35f44ae696d9dd8b205ef40b27738a27f4279b57d2faab37" }, "downloads": -1, "filename": "evilunit-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "6b629a224bc75a9d2a629987e37a0da6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8017, "upload_time": "2019-09-19T15:56:56", "upload_time_iso_8601": "2019-09-19T15:56:56.746947Z", "url": "https://files.pythonhosted.org/packages/31/54/539e38f50432ceda8692441a3da5f03a6ae0abb8bf5b63f5d442e1b40d45/evilunit-0.1.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b7ed43ebb57d5a463d4609089c3cb547", "sha256": "4ffa01173f5ad1022ee379bfa7efd45165ad04969361c745bb0f153ba1b7dbf3" }, "downloads": -1, "filename": "evilunit-0.1.3.tar.gz", "has_sig": false, "md5_digest": "b7ed43ebb57d5a463d4609089c3cb547", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5284, "upload_time": "2015-03-08T09:31:02", "upload_time_iso_8601": "2015-03-08T09:31:02.388144Z", "url": "https://files.pythonhosted.org/packages/3d/64/44a8c321f1c79875f8f119f558ad97366ad2ce51d3feec6198a7b3e2e153/evilunit-0.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "8a632ac3bab31839cfb4e304647a547b", "sha256": "bd419b19ca4e20062b5aafa9c01a437550493ccd672a2f3d9d677433ccec2982" }, "downloads": -1, "filename": "evilunit-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "8a632ac3bab31839cfb4e304647a547b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8016, "upload_time": "2019-09-19T15:58:19", "upload_time_iso_8601": "2019-09-19T15:58:19.588575Z", "url": "https://files.pythonhosted.org/packages/b6/d4/4ab44761412d5f1707bcb400a799bef6d488334c8562f3e52aa81c890088/evilunit-0.1.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "eceb89866fe2e031f166237ab25adc77", "sha256": "ed0d90420f7604e62d6e9e44bfbee126e5dd83421dbe7619fb4330652a6754c6" }, "downloads": -1, "filename": "evilunit-0.1.4.tar.gz", "has_sig": false, "md5_digest": "eceb89866fe2e031f166237ab25adc77", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5775, "upload_time": "2019-09-19T15:58:21", "upload_time_iso_8601": "2019-09-19T15:58:21.433095Z", "url": "https://files.pythonhosted.org/packages/40/8a/5df768180f38345ad8d194f92eb254ef06698172063749da1615387c5080/evilunit-0.1.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "620701bbf938dc398f05ff8f9c1339d8", "sha256": "aa8d9c47f5602efbd31f9869a6f56d0089674a88677e6879dc9f5f8bbf5324a2" }, "downloads": -1, "filename": "evilunit-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "620701bbf938dc398f05ff8f9c1339d8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10724, "upload_time": "2019-10-30T08:01:00", "upload_time_iso_8601": "2019-10-30T08:01:00.958206Z", "url": "https://files.pythonhosted.org/packages/3c/8f/c0c543c817a312bf87267a550366b62beafc6560210b0b667e87770a7292/evilunit-0.2.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "c4fd6643c2d2367a62423b2900914ed2", "sha256": "61d1e2d29e7a119d87c100f221c05a2357b6db58c15b52a4f897528da1bbf0ec" }, "downloads": -1, "filename": "evilunit-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c4fd6643c2d2367a62423b2900914ed2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9267, "upload_time": "2019-10-30T10:52:13", "upload_time_iso_8601": "2019-10-30T10:52:13.270389Z", "url": "https://files.pythonhosted.org/packages/2a/51/38169e389f5860b4cf390c5f7f8823abc9fa2f1d1289eb1ea3504267c950/evilunit-0.2.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c4fd6643c2d2367a62423b2900914ed2", "sha256": "61d1e2d29e7a119d87c100f221c05a2357b6db58c15b52a4f897528da1bbf0ec" }, "downloads": -1, "filename": "evilunit-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c4fd6643c2d2367a62423b2900914ed2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9267, "upload_time": "2019-10-30T10:52:13", "upload_time_iso_8601": "2019-10-30T10:52:13.270389Z", "url": "https://files.pythonhosted.org/packages/2a/51/38169e389f5860b4cf390c5f7f8823abc9fa2f1d1289eb1ea3504267c950/evilunit-0.2.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }