{ "info": { "author": "John Andersen", "author_email": "johnandersenpdx@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# httptest\n\n[![Build Status](https://travis-ci.org/pdxjohnny/httptest.svg?branch=master)](https://travis-ci.org/pdxjohnny/httptest) [![codecov](https://codecov.io/gh/pdxjohnny/httptest/branch/master/graph/badge.svg)](https://codecov.io/gh/pdxjohnny/httptest)\n\nHTTP testing inspired by golang's httptest package. Supports wrapping asyncio\ncoroutine functions (`async def`).\n\n## Usage\n\n### Simple HTTP Server Handler\n\n```python\nimport unittest\nimport urllib.request\n\nimport httptest\n\nclass TestHTTPServer(httptest.Handler):\n\n def do_GET(self):\n self.send_response(200)\n self.send_header(\"Content-type\", \"text/plain\")\n self.end_headers()\n self.wfile.write(bytes(\"what up\", \"utf-8\"))\n\nclass TestHTTPTestMethods(unittest.TestCase):\n\n @httptest.Server(TestHTTPServer)\n def test_call_response(self, ts=httptest.NoServer()):\n with urllib.request.urlopen(ts.url()) as f:\n self.assertEqual(f.read().decode('utf-8'), \"what up\")\n\nif __name__ == '__main__':\n unittest.main()\n```\n\n### Asyncio Support\n\nAsyncio support for the unittest package hasn't yet landed in Python.\n[python/issue32972](https://bugs.python.org/issue32972).\n\nIf you want a quick way to add `asyncio` test cases you can import the helper\nfrom [intel/dffml](https://github.com/intel/dffml).\n\n```python\nimport unittest\nimport urllib.request\nfrom dffml.util.asynctestcase import AsyncTestCase\n\nimport httptest\n\nclass TestHTTPServer(httptest.Handler):\n\n def do_GET(self):\n self.send_response(200)\n self.send_header(\"Content-type\", \"text/plain\")\n self.end_headers()\n self.wfile.write(bytes(\"what up\", \"utf-8\"))\n\nclass TestHTTPTestMethods(AsyncTestCase):\n\n @httptest.Server(TestHTTPServer)\n async def test_call_response(self, ts=httptest.NoServer()):\n with urllib.request.urlopen(ts.url()) as f:\n self.assertEqual(f.read().decode('utf-8'), \"what up\")\n\nif __name__ == '__main__':\n unittest.main()\n```\n\nIn your project's `setup.py`, add `dffml` in `tests_require`.\n\n```python\nsetup(\n name='your_package',\n ...\n tests_require=[\n 'httptest>=0.0.14',\n 'dffml>=0.1.2'\n ]\n)\n```\n\n## Auto Install\n\nIf you're making a python package, you'll want to add `httptest` to your\n`setup.py` file's `tests_require` section.\n\nThis way, when your run `python setup.py test` setuptools will install\n`httptest` for you in a package local directory, if it's not already installed.\n\n```python\nsetup(\n name='your_package',\n ...\n tests_require=[\n 'httptest>=0.0.14'\n ]\n)\n```", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/pdxjohnny/httptest/tarball/0.0.15", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pdxjohnny/httptest", "keywords": "unittesting,testing,http,api,test", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "httptest", "package_url": "https://pypi.org/project/httptest/", "platform": "", "project_url": "https://pypi.org/project/httptest/", "project_urls": { "Download": "https://github.com/pdxjohnny/httptest/tarball/0.0.15", "Homepage": "https://github.com/pdxjohnny/httptest" }, "release_url": "https://pypi.org/project/httptest/0.0.15/", "requires_dist": null, "requires_python": "", "summary": "Add unit tests to your http clients", "version": "0.0.15" }, "last_serial": 5139717, "releases": { "0.0.10": [ { "comment_text": "", "digests": { "md5": "5ae266d347248200675ccda0dd8209b4", "sha256": "ff91d4aeb4f29c739201a27119936325504bb2b2b3d6f9af503d737c1fc854bf" }, "downloads": -1, "filename": "httptest-0.0.10.tar.gz", "has_sig": false, "md5_digest": "5ae266d347248200675ccda0dd8209b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5843, "upload_time": "2019-04-03T16:57:58", "url": "https://files.pythonhosted.org/packages/5f/a9/747ed0a6b3cd5a53cbf473334eb2bc732933ca0d11b3bd7ee04b1a153721/httptest-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "3c628bc2e4cf2d5d499c128a7e1e3bf7", "sha256": "770bbd9bfafcf31469183ee516abb945ec5d1b45c93b55116725bbf9b97a479b" }, "downloads": -1, "filename": "httptest-0.0.11.tar.gz", "has_sig": false, "md5_digest": "3c628bc2e4cf2d5d499c128a7e1e3bf7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5862, "upload_time": "2019-04-03T21:18:28", "url": "https://files.pythonhosted.org/packages/4c/5f/d05573f42f1453018bae995007b9c9bc3e2b2c0d846370159dd0e557beda/httptest-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "60c38e259b7545b24d7216b84f8e57e9", "sha256": "499d841fdb30abffe10b7381f2923fa17f26bb5172851900b0cae4428a5c6dbb" }, "downloads": -1, "filename": "httptest-0.0.12.tar.gz", "has_sig": false, "md5_digest": "60c38e259b7545b24d7216b84f8e57e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5872, "upload_time": "2019-04-03T22:32:16", "url": "https://files.pythonhosted.org/packages/ab/c6/15dda9b9820b9f596b12e274f2fe1d0f8684b75dbadd0d4529de1b22e05f/httptest-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "eb3f093a38e912ff5f17ca5e852870eb", "sha256": "94b837d6e2e6fc317196182054167b006fbf0e96722dc17f63dcca41af5870f0" }, "downloads": -1, "filename": "httptest-0.0.13.tar.gz", "has_sig": false, "md5_digest": "eb3f093a38e912ff5f17ca5e852870eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6297, "upload_time": "2019-04-11T23:47:58", "url": "https://files.pythonhosted.org/packages/92/00/0afe1f4393af27f34434892f8a8eacac978771122cac549fa06e805eed5f/httptest-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "3595f58afa4dea67bcb424dcfa075a49", "sha256": "d829126c9bc22984b1b01e6f0f8597386593ba6e12a57b522e8256a51c1c3a29" }, "downloads": -1, "filename": "httptest-0.0.14.tar.gz", "has_sig": false, "md5_digest": "3595f58afa4dea67bcb424dcfa075a49", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7092, "upload_time": "2019-04-14T02:22:51", "url": "https://files.pythonhosted.org/packages/00/d5/6997f13adbecfeded45ab61adb42cad7655d1073b36c3698235a75274e76/httptest-0.0.14.tar.gz" } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "3bf5f89f487c6d509b8fbcf51201f12d", "sha256": "785426cfe6cd5e96e8320a0f9a9e1212848739624a1bd3e36d25a86f0850d6c2" }, "downloads": -1, "filename": "httptest-0.0.15.tar.gz", "has_sig": false, "md5_digest": "3bf5f89f487c6d509b8fbcf51201f12d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7117, "upload_time": "2019-04-14T02:25:17", "url": "https://files.pythonhosted.org/packages/f1/53/221fd13d734d24ba7fff3403141d21879254e949dc5e99382774ea33d7c8/httptest-0.0.15.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "0a9f34fd5d4b3deb3d5096e01c9ed261", "sha256": "4cc981cd917818a7ab6d89525178ad38f4011bda45caba7f115db666a032e2c7" }, "downloads": -1, "filename": "httptest-0.0.5.tar.gz", "has_sig": false, "md5_digest": "0a9f34fd5d4b3deb3d5096e01c9ed261", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4221, "upload_time": "2017-08-02T17:53:21", "url": "https://files.pythonhosted.org/packages/60/8a/a5eecb7ba1d4664bfc66ab34b30dbdfae5e268d2b245ced1ade8dd67cf7b/httptest-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "e7562b61d034e572a75e151ba6c64c3b", "sha256": "5926df5eb19e21bdc4643e54c4e7ca224e0f16d463ec399ed724c5e940ebcf64" }, "downloads": -1, "filename": "httptest-0.0.6.tar.gz", "has_sig": false, "md5_digest": "e7562b61d034e572a75e151ba6c64c3b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4208, "upload_time": "2017-08-02T18:04:03", "url": "https://files.pythonhosted.org/packages/d8/d0/8c22c0b00baa75158113e48eef5d09babec5780819fec8476e1845eeb37e/httptest-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "3281cd9bcaca1e7f2583bb41acb00797", "sha256": "642e82064717a3587daf563d42a2c3495cc2af187fdc32de7cc30a6dd69459af" }, "downloads": -1, "filename": "httptest-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "3281cd9bcaca1e7f2583bb41acb00797", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5382, "upload_time": "2018-09-05T16:36:23", "url": "https://files.pythonhosted.org/packages/8d/e7/1b0aea8bf4874dfef8e9276b8c3a731c6cbc373c498c15d3db4b035a1ae3/httptest-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5948813d83addae6e56ab2b5176104cf", "sha256": "5e442141b8c24b340b5ae8da69ec7e40255e60a919adc3d8cb16425a134a1a35" }, "downloads": -1, "filename": "httptest-0.0.7.tar.gz", "has_sig": false, "md5_digest": "5948813d83addae6e56ab2b5176104cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4267, "upload_time": "2018-09-05T16:36:25", "url": "https://files.pythonhosted.org/packages/53/ae/43c739dfaf4aa3b2ca5a576aec46f37122e4a4fe4f27253129d4da61fede/httptest-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "8dd6f8b69d2671c1d7115b6ea39bb45a", "sha256": "d61eae6fbaa9484a5fb54c66ac56d3d1d1e83c18b5b1e69d6d76807cb7ab126a" }, "downloads": -1, "filename": "httptest-0.0.8.tar.gz", "has_sig": false, "md5_digest": "8dd6f8b69d2671c1d7115b6ea39bb45a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5624, "upload_time": "2019-04-02T22:50:57", "url": "https://files.pythonhosted.org/packages/b0/da/8837029368d30f24763108e2df0ea4b78b88b4c5734c01f4d1a553ad11a0/httptest-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "92d6f631f456dc69f794a63b4902e8c0", "sha256": "31f4cc5c0b26536d619dc2730037a624969a47764847198d21e896aa554a4015" }, "downloads": -1, "filename": "httptest-0.0.9.tar.gz", "has_sig": false, "md5_digest": "92d6f631f456dc69f794a63b4902e8c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5732, "upload_time": "2019-04-02T23:41:07", "url": "https://files.pythonhosted.org/packages/b3/8f/7ffde659d2c66c46c3fcf6dab5c60c143ca71fbe4f53306fba1e4df288ee/httptest-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3bf5f89f487c6d509b8fbcf51201f12d", "sha256": "785426cfe6cd5e96e8320a0f9a9e1212848739624a1bd3e36d25a86f0850d6c2" }, "downloads": -1, "filename": "httptest-0.0.15.tar.gz", "has_sig": false, "md5_digest": "3bf5f89f487c6d509b8fbcf51201f12d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7117, "upload_time": "2019-04-14T02:25:17", "url": "https://files.pythonhosted.org/packages/f1/53/221fd13d734d24ba7fff3403141d21879254e949dc5e99382774ea33d7c8/httptest-0.0.15.tar.gz" } ] }