{ "info": { "author": "kylinfish", "author_email": "kylinfish@126.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Topic :: Internet :: WWW/HTTP", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Utilities" ], "description": "test-service\n\n\u7b80\u4ecb:\n-----\n\npycharm\u81ea\u5e26\u4e2a\u5de5\u5177\uff0c\u5728\u83dc\u5355Tools --> Test RESTful Web Service\u53ef\u4ee5\u6253\u5f00\uff0c\u53ef\u89c6\u5316\u754c\u9762\u7684\u64cd\u4f5c\uff0c\u4f46\u4e0d\u5229\u4e8e\u53c2\u6570\u8f93\u5165\u540e\u4fdd\u5b58\u4ee5\u53ca\u540e\u7eed\u7684\u590d\u7528\u3002\n\n\u6b64\u5de5\u5177\u57fa\u4e8e\u4ee5\u4e0a\u7f3a\u70b9\uff0c\u76f4\u63a5\u501f\u52a9linux\u5de5\u5177\uff0c\u7ed3\u5408\u5b9e\u9645\u7684\u4e2a\u4eba\u9700\u6c42\u4e0e\u60f3\u6cd5\uff0c\u4ee5\u62e6\u622a\u8bf7\u6c42\u3001\u4fdd\u5b58\u8bf7\u6c42\u3001\u590d\u7528\u7684\u6d41\u7a0b\u8fdb\u884c\uff0c\u4e3a\u65b9\u4fbf\u4e2a\u4eba\u6240\u7528\u5b9a\u5236\u3002\n\n\u4f9d\u8d56:\n-----\n ::\n\n $ sudo yum install curl\n $ sudo apt-get install curl\n\n\u4f7f\u7528:\n-----\n\n \u6a21\u5757\u4ecb\u7ecd\uff1a\n ::\n\n curl_reader.py:\n - \u8bfb\u53d6\u5b58\u653e\u6d4b\u8bd5\u811a\u672c\u7684\u6587\u4ef6, \u4ee5\u547d\u4ee4\u884c\u7684\u5f62\u5f0f\u6267\u884c(\u6307\u5b9a\u7684\u884c\u811a\u672c, \u6307\u5b9a\u8303\u56f4\u7684\u884c\u811a\u672c).\n - \u5229\u7528 linux curl \u6784\u5efa\u6d4b\u8bd5\u811a\u672c, \u51cf\u5c11\u670d\u52a1\u7aef\u5f00\u53d1\u8fc7\u7a0b\u4e2d, \u5728\u6d4b\u8bd5\u4e0a\u5bf9\u5ba2\u6237\u7aef\u7684\u4f9d\u8d56.\n\n converge.py:\n - \u4ece\u6e90\u7801\u6587\u4ef6\u4e2d\u751f\u6210 \u6d88\u606f\u7801/\u6d88\u606f\u6587\u672c\u914d\u7f6e\u4fe1\u606f.\n\n @kylin_debug_request:\n - \u6d4b\u8bd5\u65f6, \u5b9e\u65f6\u8f93\u51faPOST\u4fe1\u606f\u5230\u63a7\u5236\u53f0.\n - \u6d4b\u8bd5\u65f6, \u5b9e\u65f6\u8f93\u51fa\u5904\u7406\u65f6\u95f4\u5230\u63a7\u5236\u53f0.\n - \u4fdd\u5b58\u6d4b\u8bd5\u65f6\u6bcf\u4e2aview\u51fd\u6570\u7684\u6267\u884c\u65f6\u95f4, \u7528\u4e8e\u540e\u7eed\u6027\u80fd\u5206\u6790\u53ca\u7a0b\u5e8f\u6301\u7eed\u6539\u8fdb.\n\n curl_builder.py:\n - \u6784\u5efa\u751f\u6210curl\u6d4b\u8bd5\u8bf7\u6c42\u6570\u636e, \u4ee5\u4fbf\u4e8e\u540e\u7eed\u56de\u5f52\u6d4b\u8bd5, \u4f9bcurl_reader.py\u81ea\u52a8\u5316.\n - \u5bf9\u4e4b\u524d\u751f\u6210\u62a5\u544a\u6587\u4ef6\u505a\u53bb\u91cd\u5904\u7406.\n\n \u914d\u7f6esettings.py\u4fee\u6539\uff1a\n ::\n\n # test-service\u914d\u7f6e\u9879\n POST_DATA_PRINT = False # \u662f\u5426\u8f93\u5165POST\u6570\u636e\n POST_DATA_SAVED = False # \u662f\u5426\u4fdd\u5b58\u8bf7\u6c42\u75d5\u8ff9\n EXEC_TIME_PRINT = False # \u662f\u5426\u8f93\u51fa\u6267\u884c\u65f6\u95f4\n SAVE_ROWS_QUEUE = 5 # \u6700\u5927\u591a\u5c11\u884c\u6570\u4fdd\u5b58\n\n LOGIN_API = ('/user/login/', '/user/join/',) # \u767b\u9646\n LOGOUT_API = ('/user/logout/',) # \u6ce8\u9500\n\n TIME_REPORT = os.path.join(BASE_DIR, 'report', 'report_time.md') # \u65f6\u95f4\u4fdd\u5b58\u6587\u4ef6\n CURL_REPORT = os.path.join(BASE_DIR, 'report', 'report_curl.md') # \u811a\u672c\u4fdd\u5b58\u6587\u4ef6\n CONVERGE_LIST = [os.path.join(BASE_DIR, 'demo', 'views.py')] # \u8981\u67e5\u627e\u6e90\u6587\u4ef6\u8def\u5f84\n\n django manage.py \u547d\u4ee4\u9879\u5982\u4e0b\uff1a\n ::\n\n $ python manage.py converge\n $ python manage.py distinctcurl\n\n $ python manage.py executecurl\n $ python manage.py executecurl 5\n $ python manage.py executecurl 5 10\n\n @kylin_debug_request \u88c5\u9970\u4f60\u7684views.py\u51fd\u6570.\n\ncurl\u53c2\u6570:\n---------\n\n GET \u8fd8\u662f POST \u6a21\u5f0f, \u8981\u770b\u5bf9\u9762\u670d\u52a1\u5668\u7684\u7a0b\u5e8f\u8bbe\u5b9a, curl \u9ed8\u8ba4 GET \u6a21\u5f0f.\n \n -G GET\u65b9\u5f0f\u4f20\u9001\u6570\u636e\n -d POST\u65b9\u5f0f\u4f20\u9001\u6570\u636e \n \n -D cookie.txt \u5199 cookie \u5b58\u50a8 cookie \u4fe1\u606f\u4ece response \u5230\u6587\u4ef6\n -b cookie.txt \u8bfb cookie \u8ffd\u52a0 cookie \u4fe1\u606f\u5230 request \u8bf7\u6c42\u4e2d\n \n -B, --use-ascii Use ASCII/text transfer\n -S, --show-error Show error. With -s, make curl show errors when they occur\n -s, --silent Silent mode. Don't output anything\n \n -x \u8bbf\u95ee\u6240\u4f7fproxy\u670d\u52a1\u5668\u53ca\u5176\u7aef\u53e3\n \n -o \u4e0b\u8f7d\u6587\u4ef6, \u6307\u5b9a\u6587\u4ef6\u540d\n -O \u6309\u7167\u670d\u52a1\u5668\u4e0a\u7684\u6587\u4ef6\u540d, \u81ea\u52a8\u5b58\u5728\u672c\u5730\n \n -A \u5ba3\u79f0\u8bbf\u95ee\u6240\u4f7f\u7528\u7684\u81ea\u5df1\u7684\u6d4f\u89c8\u5668\u4fe1\u606f -A \"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\"\n \n -e \u5ba3\u79f0 referer \u5730\u5740, \u670d\u52a1\u5668\u7aef\u5e38\u7528\u7684\u9650\u5236\u65b9\u6cd5, \u5c31\u662f\u68c0\u67e5 http \u8bbf\u95ee\u7684 referer, \u6bd4\u5982\u5148\u8bbf\u95ee\u9996\u9875, \u518d\u8bbf\u95ee\u6307\u5b9a\u7684\n \u4e0b\u8f7d\u9875, \u4e0b\u8f7d\u9875\u7684 referer \u5730\u5740\u5c31\u662f\u9996\u9875\u5730\u5740, \u670d\u52a1\u5668\u7aef\u53ea\u8981\u53d1\u73b0\u5bf9\u4e0b\u8f7d\u9875\u67d0\u6b21\u8bbf\u95ee\u7684 referer \u5730\u5740\u4e0d\u662f\u9996\u9875\u5730\u5740, \u5c31\n \u53ef\u4ee5\u65ad\u5b9a\u662f\u76d7\u8fde, \u8fd9\u6837\u5c31\u53ef\u4ee5\u9a97\u5bf9\u65b9\u7684\u670d\u52a1\u5668.\n \n FTP \u4e0a\u4f20\u6587\u4ef6: \n curl -T local_file -u name:passwd ftp://url:port/path/\n \n HTTP PUT method \u4e0a\u4f20\u6587\u4ef6:\n curl -T local_file http://url:port/path\n \n POST \u6a21\u5f0f\u4e0b\u7684\u6587\u4ef6\u4e0a\u7684\u6587\u4ef6\u4e0a\u4f20:\n ::\n\n
\n \n \u8fd9\u6837\u7684HTTP\u8868\u5355\uff0c\u7528curl\u8fdb\u884c\u6a21\u62df\uff1a\n curl -F upload=@local_file -F nick=go http://http://url:port/path\n\n\n\u4f1a\u8bdd\u72b6\u6001\u7684\u65b9\u5f0f:\n---------------\n\n # \u4e00\u79cd\u65b9\u5f0f\u662f\u5982\u4e0a\u4f7f\u7528 curl -b \u6765\u5b58\u50a8\u9644\u52a0.\n\n # \u4e00\u79cd\u65b9\u5f0f\u662f\u81ea\u5b9a\u4e49\u88c5\u9970\u5668\u5373\u65f6\u81ea\u52a8\u767b\u9646, \u57fa\u4e8e django/contrib/auth/decorators.py \u539f\u6587\u4ef6\u7684\u6539\u52a8.\n\n Add the following items in settings.py:\n ::\n\n AUTO_LOGIN_USER = 'kylin'\n AUTO_LOGIN_PASSWORD = '123456'\n\n create yours decorators code file.\n ::\n\n $ cp [your_paths]/django/contrib/auth/decorators.py [your_project_path]/decorators.py.\n $ vim [your_project_path]/decorators.py\n\n find function user_passes_test -> decorator -> _wrapped_view in decorators.py file.\n\n add code:\n ::\n\n auto_login_user = getattr(settings, \"AUTO_LOGIN_USER\", None)\n auto_login_password = getattr(settings, \"AUTO_LOGIN_PASSWORD\", None)\n\n if auto_login_user is not None and auto_login_password is not None:\n user = authenticate(username=auto_login_user, password=auto_login_password)\n login(request, user)\n return view_func(request, *args, **kwargs)\n\n then usage:\n ::\n\n try:\n from yours.decorators import login_required, permission_required\n except:\n from django.contrib.auth.decorators import login_required, permission_required\n\n\nChangelog\n=========\n\n1.2 - 14-Feb-2015\n-----------------\n\n* First release", "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/kylinfish/test-service", "keywords": "test-service", "license": "MIT License", "maintainer": null, "maintainer_email": null, "name": "test-service", "package_url": "https://pypi.org/project/test-service/", "platform": "any", "project_url": "https://pypi.org/project/test-service/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://bitbucket.org/kylinfish/test-service" }, "release_url": "https://pypi.org/project/test-service/1.2/", "requires_dist": null, "requires_python": null, "summary": "test-service is a Python package that test web service base on linux curl.", "version": "1.2" }, "last_serial": 1423601, "releases": { "1.2": [ { "comment_text": "built for Linux-3.13.0-45-generic-x86_64-with-glibc2.7", "digests": { "md5": "5fe34247ba8f390ada3b38915f105581", "sha256": "6ca059f5807b77219de705a96706f1dbf64f67feda520c97df053cdf032fd665" }, "downloads": -1, "filename": "test-service-1.2.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "5fe34247ba8f390ada3b38915f105581", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 22826, "upload_time": "2015-02-14T15:34:19", "url": "https://files.pythonhosted.org/packages/19/24/da0e12a22052604c1c3c46a0360ef061f991f3cc52d0b5c020373503a61b/test-service-1.2.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "df10d41826018b11f27f6da605cb5f4a", "sha256": "fa31d403e886ca7348b11e6462f30126e77f86b7e98acab8928c636c1eb30fee" }, "downloads": -1, "filename": "test_service-1.2-py2.7.egg", "has_sig": false, "md5_digest": "df10d41826018b11f27f6da605cb5f4a", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 34987, "upload_time": "2015-02-14T15:34:26", "url": "https://files.pythonhosted.org/packages/d1/3b/29e236bea64b1f77a7549c3e12f86243c366eebaab0bb6910e7e399dbb24/test_service-1.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "432a77c83fc1c1a24a59ca1d5e3d5ac5", "sha256": "4804c1948f29a9e7760874d9cce65fcfcd3d2dca04985cafe0153e35a98a17e6" }, "downloads": -1, "filename": "test-service-1.2.tar.gz", "has_sig": false, "md5_digest": "432a77c83fc1c1a24a59ca1d5e3d5ac5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17140, "upload_time": "2015-02-14T15:34:13", "url": "https://files.pythonhosted.org/packages/b4/74/9d2257294f87b930d46074e898d7db8157d7e133677159a1221fbb49b316/test-service-1.2.tar.gz" } ] }, "urls": [ { "comment_text": "built for Linux-3.13.0-45-generic-x86_64-with-glibc2.7", "digests": { "md5": "5fe34247ba8f390ada3b38915f105581", "sha256": "6ca059f5807b77219de705a96706f1dbf64f67feda520c97df053cdf032fd665" }, "downloads": -1, "filename": "test-service-1.2.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "5fe34247ba8f390ada3b38915f105581", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 22826, "upload_time": "2015-02-14T15:34:19", "url": "https://files.pythonhosted.org/packages/19/24/da0e12a22052604c1c3c46a0360ef061f991f3cc52d0b5c020373503a61b/test-service-1.2.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "df10d41826018b11f27f6da605cb5f4a", "sha256": "fa31d403e886ca7348b11e6462f30126e77f86b7e98acab8928c636c1eb30fee" }, "downloads": -1, "filename": "test_service-1.2-py2.7.egg", "has_sig": false, "md5_digest": "df10d41826018b11f27f6da605cb5f4a", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 34987, "upload_time": "2015-02-14T15:34:26", "url": "https://files.pythonhosted.org/packages/d1/3b/29e236bea64b1f77a7549c3e12f86243c366eebaab0bb6910e7e399dbb24/test_service-1.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "432a77c83fc1c1a24a59ca1d5e3d5ac5", "sha256": "4804c1948f29a9e7760874d9cce65fcfcd3d2dca04985cafe0153e35a98a17e6" }, "downloads": -1, "filename": "test-service-1.2.tar.gz", "has_sig": false, "md5_digest": "432a77c83fc1c1a24a59ca1d5e3d5ac5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17140, "upload_time": "2015-02-14T15:34:13", "url": "https://files.pythonhosted.org/packages/b4/74/9d2257294f87b930d46074e898d7db8157d7e133677159a1221fbb49b316/test-service-1.2.tar.gz" } ] }