{ "info": { "author": "tester", "author_email": "tester@youmi.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# ApiMeter\n[![pipeline status](https://git.umlife.net/qa/YmApiMeter/badges/master/pipeline.svg)](https://git.umlife.net/qa/YmApiMeter/commits/master)\n[![coverage report](https://git.umlife.net/qa/YmApiMeter/badges/master/coverage.svg)](https://git.umlife.net/qa/YmApiMeter/commits/master)\n\nApiMeter \u662f\u4e00\u6b3e\u9762\u5411 HTTP(S) \u534f\u8bae\u7684\u901a\u7528\u6d4b\u8bd5\u6846\u67b6\uff0c\u53ea\u9700\u7f16\u5199\u7ef4\u62a4\u4e00\u4efd YAML/JSON \u811a\u672c\uff0c\u5373\u53ef\u5b9e\u73b0\u81ea\u52a8\u5316\u6d4b\u8bd5\u3001\u6027\u80fd\u6d4b\u8bd5\u3001\u7ebf\u4e0a\u76d1\u63a7\u3001\u6301\u7eed\u96c6\u6210\u7b49\u591a\u79cd\u6d4b\u8bd5\u9700\u6c42\u3002\u57fa\u4e8e Python \u5f00\u53d1\uff0c\u652f\u6301 Python 2.7\u548c3.3\u4ee5\u4e0a\u7248\u672c\uff0c\u53ef\u8fd0\u884c\u4e8e macOS\u3001Linux\u3001Windows\u5e73\u53f0\u3002 \n\n### \u4e00\u3001\u5b89\u88c5\u65b9\u5f0f\n```\npip install ApiMeter\n```\n\n### \u4e8c\u3001\u7248\u672c\u5347\u7ea7\n```\npip install -U ApiMeter\n```\n\n### \u4e09\u3001\u4f7f\u7528\u65b9\u5f0f\n\u5728 ApiMeter \u5b89\u88dd\u6210\u529f\u540e\uff0c\u53ef\u4ee5\u4f7f\u7528 apimeter\u3001ymapi\u3001ymapimeter \u547d\u4ee4\u8fdb\u884c\u8c03\u7528\uff0c\u5982\uff1a\n```\n$ apimeter -V\n1.0.0\n\n$ ymapi -V\n1.0.0\n\n$ ymapimeter -V\n1.0.0\n\n$ apimeter -h\nusage: main.py [-h] [-V] [--no-html-report]\n [--html-report-name HTML_REPORT_NAME]\n [--html-report-template HTML_REPORT_TEMPLATE]\n [--log-level LOG_LEVEL] [--log-file LOG_FILE]\n [--dot-env-path DOT_ENV_PATH] [--failfast]\n [--startproject STARTPROJECT]\n [--validate [VALIDATE [VALIDATE ...]]]\n [--prettify [PRETTIFY [PRETTIFY ...]]]\n [testset_paths [testset_paths ...]]\n\nOne-stop solution for HTTP(S) testing.\n\npositional arguments:\n testset_paths testset file path\n\noptional arguments:\n -h, --help show this help message and exit\n -V, --version show version\n --no-html-report do not generate html report.\n --html-report-name HTML_REPORT_NAME\n specify html report name, only effective when\n generating html report.\n --html-report-template HTML_REPORT_TEMPLATE\n specify html report template path.\n --log-level LOG_LEVEL\n Specify logging level, default is INFO.\n --log-file LOG_FILE Write logs to specified file path.\n --dot-env-path DOT_ENV_PATH\n Specify .env file path, which is useful for keeping\n production credentials.\n --failfast Stop the test run on the first error or failure.\n --startproject STARTPROJECT\n Specify new project name.\n --validate [VALIDATE [VALIDATE ...]]\n Validate JSON testset format.\n --prettify [PRETTIFY [PRETTIFY ...]]\n Prettify JSON testset format.\n\n$ ymapimeter test_file.yml or test_file.ymal or test_file.json or test_dir/\ntest result and report ...\n``` \n\n### \u56db\u3001\u5f00\u53d1\u8005\u6a21\u5f0f\n1\u3001ApiMeter\u4f7f\u7528 pipenv \u5bf9\u4f9d\u8d56\u5305\u8fdb\u884c\u7ba1\u7406\uff0c\u5982\u679c\u4f60\u6ca1\u6709\u5b89\u88c5\uff0c\u5b89\u88c5\u547d\u4ee4\u5982\u4e0b\uff1a\n```\npip install pipenv\n```\n2\u3001\u62c9\u53d6 ApiMeter \u6e90\u4ee3\u7801\uff1a\n```\ngit clone git@git.umlife.net:qa/YmApiMeter.git\n```\n3\u3001\u8fdb\u5165\u4ed3\u5e93\u76ee\u5f55\uff0c\u5b89\u88c5\u4f9d\u8d56\uff1a\n```\ncd YmApiMeter/\npipenv install --dev\n```\n4\u3001\u8fdb\u5165\u6d4b\u8bd5\u76ee\u5f55\uff0c\u8fd0\u884c\u5355\u5143\u6d4b\u8bd5\uff1a\n```\nexport PYTHONPATH=`pwd`\ncd tests/\n# \u76f4\u63a5\u547d\u4ee4\u884c\u8f93\u51fa\u6d4b\u8bd5\u7ed3\u679c\npipenv run python -m unittest discover\n\n\u6216\n\n# \u5f53\u524d\u76ee\u5f55\u8f93\u51fa\u6d4b\u8bd5\u62a5\u544aunit_test_report.html\npipenv run python all_test.py \n\n\u6216\n\n# \u8ba1\u7b97\u5355\u5143\u6d4b\u8bd5\u8986\u76d6\u7387\uff0c\u5728\u5f53\u524d\u76ee\u5f55\u4e0b\u751f\u6210.coverage\u7edf\u8ba1\u7ed3\u679c\u6587\u4ef6\npipenv run coverage run --source=../apimeter -m unittest discover \n# \u547d\u4ee4\u884c\u4e2d\u8f93\u51fa\u76f4\u89c2\u7684\u6587\u5b57\u62a5\u544a\npipenv run coverage report -m \n# \u5c06\u7edf\u8ba1\u7ed3\u679c\u8f6c\u5316\u4e3aHTML\u62a5\u544a\uff0c\u5728\u5f53\u524d\u76ee\u5f55\u4e0b\u751f\u6210htmlcov\u62a5\u544a\u76ee\u5f55\uff0c\u67e5\u770b\u91cc\u9762\u7684index.html\u6587\u4ef6\u5373\u53ef\npipenv run coverage html \n```\n5\u3001\u8fdb\u5165\u4ed3\u5e93\u76ee\u5f55\uff0c\u8fdb\u884c\u4ee3\u7801\u89c4\u8303\u68c0\u6d4b\uff1a\n```\n# \u76f4\u63a5\u547d\u4ee4\u884c\u4e2d\u8f93\u51fa\u7ed3\u679c\npipenv run python -m flake8 \n\n\u6216\n\n# \u901a\u8fc7flake8chart\u63d2\u4ef6\u5c06\u7ed3\u679c\u8f6c\u5316\u4e3acsv\u8868\u683c\u548csvg\u56fe\u7247\npipenv run python -m flake8 --statistics | flake8chart --chart-type=PIE --chart-output=flake8_pie_report.svg --csv-output=flake8_data.csv\n\n\u6216\n\n# \u901a\u8fc7flake8_formatter_junit_xml\u63d2\u4ef6\u5c06\u7ed3\u679c\u8f6c\u5316\u4e3ajunit\u683c\u5f0f\u62a5\u544a\npipenv run python -m flake8 --format junit-xml --output-file flake8_junit_report.xml\n\n\u6216\n\n# \u901a\u8fc7falke8-junit-report\u63d2\u4ef6\u5c06\u7ed3\u679c\u8f6c\u5316\u4e3ajunit\u683c\u5f0f\u62a5\u544a\npipenv run python -m flake8 --output-file flake8.txt\npipenv run python -m flake8_junit flake8.txt flake8_junit_report.xml \n```\n6\u3001\u5f00\u53d1\u8c03\u8bd5\uff0c\u8fd0\u884c\u65b9\u5f0f\uff1a\n```\npipenv run python main.py apimeter -h\n```\n\n\n### \u4e94\u3001\u4e00\u952e\u4e0a\u4f20 PYPI \u5e76\u6253 TAG\n\u6bcf\u6b21\u5728 __about__.py \u66f4\u65b0\u7248\u672c\u53f7\u540e\uff0c\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\uff0c\u5b9e\u73b0\u81ea\u52a8\u5316\u6253\u5305\u4e0a\u4f20 PYPI \uff0c\u540c\u65f6\u6839\u636e\u7248\u672c\u53f7\u81ea\u52a8\u6253 TAG \u5e76\u63a8\u9001\u5230\u4ed3\u5e93\uff1a\n```\npipenv run python setup.py upload\n```\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://git.umlife.net/qa/YmApiMeter", "keywords": "HTTP api test requests locust", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "ApiMeter", "package_url": "https://pypi.org/project/ApiMeter/", "platform": "", "project_url": "https://pypi.org/project/ApiMeter/", "project_urls": { "Homepage": "https://git.umlife.net/qa/YmApiMeter" }, "release_url": "https://pypi.org/project/ApiMeter/1.2.8/", "requires_dist": [ "requests", "PyYAML", "Jinja2", "har2case", "colorama", "colorlog", "requests-toolbelt" ], "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "summary": "One-stop solution for HTTP(S) testing.", "version": "1.2.8" }, "last_serial": 4261165, "releases": { "0.9.0": [ { "comment_text": "", "digests": { "md5": "b13ca9e24a71e2304405bce2a06776d4", "sha256": "41c28ac9f19785c0645f9cad89c999e0a71971f90697f7575e72788cc5110403" }, "downloads": -1, "filename": "ApiMeter-0.9.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b13ca9e24a71e2304405bce2a06776d4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 42720, "upload_time": "2018-07-23T11:19:30", "url": "https://files.pythonhosted.org/packages/58/3f/a5f48b1930da2d5b60352172f19df554106894c58964f7664b8ad11c6274/ApiMeter-0.9.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bf51e494e6253b0b560c3f3826771131", "sha256": "64ed02e19fa19f287093a2e2cbf0ade8743d4a2f63524e345bb46a98523b17e0" }, "downloads": -1, "filename": "ApiMeter-0.9.0.tar.gz", "has_sig": false, "md5_digest": "bf51e494e6253b0b560c3f3826771131", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 36867, "upload_time": "2018-07-23T11:19:32", "url": "https://files.pythonhosted.org/packages/90/4a/3ecb7ff034769f9ccb73e9af13c3e45bd0a994767f8c44b7abd6130b4e5d/ApiMeter-0.9.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "ec74f6b2fa206c52a2d60669855d8a4f", "sha256": "adaba0c33aeabcfe05433fd173b1df75d6d310581d6883d4665d631853026244" }, "downloads": -1, "filename": "ApiMeter-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ec74f6b2fa206c52a2d60669855d8a4f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 42803, "upload_time": "2018-07-24T11:44:10", "url": "https://files.pythonhosted.org/packages/63/25/00264048d047a4ad4d4f0225a58275a26681082ccd012e58da1653960842/ApiMeter-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b49db222504fd8f1772c4427043dcf70", "sha256": "375d150ec242aee40ad8bd0304db885b36aaa19861cf6f89d4d53b377a82e479" }, "downloads": -1, "filename": "ApiMeter-1.0.0.tar.gz", "has_sig": false, "md5_digest": "b49db222504fd8f1772c4427043dcf70", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 37027, "upload_time": "2018-07-24T11:44:12", "url": "https://files.pythonhosted.org/packages/b9/15/5705ad74f26879f18b976cf7748e5fa38d34f3f138b0b5868f4c03e9cf3c/ApiMeter-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "12663f4a033ae09080ad0d031c8517dc", "sha256": "edabf2c362f2727cc6b3d4656dec1fd0ce0307ab985ac0109389cabdb996198b" }, "downloads": -1, "filename": "ApiMeter-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "12663f4a033ae09080ad0d031c8517dc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 43372, "upload_time": "2018-08-03T09:02:19", "url": "https://files.pythonhosted.org/packages/96/82/8233ff3242f304599c70fd3381349a70e925f3f8be27a16b8f724f51d615/ApiMeter-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e7857a165109bff5496911a15f326eb6", "sha256": "156c891de827828db61353ab41169977e5772eceac5155ec646b81e12e19e363" }, "downloads": -1, "filename": "ApiMeter-1.1.0.tar.gz", "has_sig": false, "md5_digest": "e7857a165109bff5496911a15f326eb6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 37750, "upload_time": "2018-08-03T09:02:22", "url": "https://files.pythonhosted.org/packages/20/11/3765a27eae1f9e0e14816fd0f57cd225d8d0836d995c716ad4deb6e59fa9/ApiMeter-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "c1500296d9bbacbcd330e27a05b78a00", "sha256": "2be34a81d468e81cee7ae1b81147432a58ae5306c383363151ec28c470f9528c" }, "downloads": -1, "filename": "ApiMeter-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c1500296d9bbacbcd330e27a05b78a00", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 46590, "upload_time": "2018-08-26T11:39:00", "url": "https://files.pythonhosted.org/packages/26/41/ef3d5edff59126c65b071d66e16bc608ad97672efe81bd392e2c7de38b84/ApiMeter-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4ea49ae769fddcdc8ce0824e99ff4948", "sha256": "e85f2ffb8d918175ebab1e583d09c9edd725a989bdab43a03991dbcdc63dc8f4" }, "downloads": -1, "filename": "ApiMeter-1.2.0.tar.gz", "has_sig": false, "md5_digest": "4ea49ae769fddcdc8ce0824e99ff4948", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 40884, "upload_time": "2018-08-26T11:39:01", "url": "https://files.pythonhosted.org/packages/ce/1c/3ca481a73a18f3ee7bd48a54299791ecf2eabfed8b4837f8a6dc8581feee/ApiMeter-1.2.0.tar.gz" } ], "1.2.5": [ { "comment_text": "", "digests": { "md5": "0f0ff9b55f5f6d3252bdc45ac451f9ca", "sha256": "e08e268c8d4aba9351f0dd476630bee62c92d7d09774293895075653cca094e6" }, "downloads": -1, "filename": "ApiMeter-1.2.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0f0ff9b55f5f6d3252bdc45ac451f9ca", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 46595, "upload_time": "2018-09-09T13:52:05", "url": "https://files.pythonhosted.org/packages/ab/0c/801952faee3bd0d86c363cdeba33c3c87de7b1b75cf9f4a57f1c758103b6/ApiMeter-1.2.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4ee7a28846fd0473ae392f9674218b35", "sha256": "5373fab9bb77bc79fc50f81cb2f00cb57320683c4a9d2e9ea66f2d21a9b60152" }, "downloads": -1, "filename": "ApiMeter-1.2.5.tar.gz", "has_sig": false, "md5_digest": "4ee7a28846fd0473ae392f9674218b35", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 41084, "upload_time": "2018-09-09T13:52:07", "url": "https://files.pythonhosted.org/packages/d5/c0/3c2e665503139c5665ce1f6be2132126016f805bd8f7a6c33343f2587c8a/ApiMeter-1.2.5.tar.gz" } ], "1.2.8": [ { "comment_text": "", "digests": { "md5": "85bf59be0d9e439233543c9d67e325c5", "sha256": "91a2696bee42446c9f5298de28c540ac579dcd752cb2df4218032f097edd932c" }, "downloads": -1, "filename": "ApiMeter-1.2.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "85bf59be0d9e439233543c9d67e325c5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 46651, "upload_time": "2018-09-11T12:41:41", "url": "https://files.pythonhosted.org/packages/e8/28/4a9b3dcc1c5bed771f0159ea0812ba43d166043395cc817692707caf7259/ApiMeter-1.2.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4429b8bdc6625040463bf941e989dd82", "sha256": "5065cd669562cc6beb1a9ca0296d6168c86f1f4f102ae28f0cb1e1ad5f1c35df" }, "downloads": -1, "filename": "ApiMeter-1.2.8.tar.gz", "has_sig": false, "md5_digest": "4429b8bdc6625040463bf941e989dd82", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 41152, "upload_time": "2018-09-11T12:41:43", "url": "https://files.pythonhosted.org/packages/44/e1/904272024084df03335287c0920f57d4d05743da1435027dc9c7676798af/ApiMeter-1.2.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "85bf59be0d9e439233543c9d67e325c5", "sha256": "91a2696bee42446c9f5298de28c540ac579dcd752cb2df4218032f097edd932c" }, "downloads": -1, "filename": "ApiMeter-1.2.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "85bf59be0d9e439233543c9d67e325c5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 46651, "upload_time": "2018-09-11T12:41:41", "url": "https://files.pythonhosted.org/packages/e8/28/4a9b3dcc1c5bed771f0159ea0812ba43d166043395cc817692707caf7259/ApiMeter-1.2.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4429b8bdc6625040463bf941e989dd82", "sha256": "5065cd669562cc6beb1a9ca0296d6168c86f1f4f102ae28f0cb1e1ad5f1c35df" }, "downloads": -1, "filename": "ApiMeter-1.2.8.tar.gz", "has_sig": false, "md5_digest": "4429b8bdc6625040463bf941e989dd82", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 41152, "upload_time": "2018-09-11T12:41:43", "url": "https://files.pythonhosted.org/packages/44/e1/904272024084df03335287c0920f57d4d05743da1435027dc9c7676798af/ApiMeter-1.2.8.tar.gz" } ] }