{ "info": { "author": "Andrey Mazur", "author_email": "pyatka.aag@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# gqltst \nFramework for automatic GraphQL testing. The framework takes url of your GraphQL endpoint, builds schema and generates http queries for testing.\n\n![Example](example.png)\n\n## Installation\n\n pip3 install gqltst\n\n## Usage\nPrepare your schema\n```python\n import gqltst\n schema = gqltst.Schema(\"https://example.com\")\n```\nThere're already prepared resolvers for Integer, String, Boolean, DateTime and Float, but you can register own resolver for your scalars.\n```python\n from gqltst.types import BaseResolver\n\n class YourResolver(BaseResolver): \n\t def resolve(self, context): \n\t yield \"Hello world\"\n\n\t def escape(self, value): \n\t return \"\\\"%s\\\"\" % (str(value)) \n\n\t def validate(self, data): \n\t return type(data) == int \n\n schema.register_scalar(\"Myscalar\", YourResolver)\n```\nStart test with own parameter resolvers\n```python\n from gqltst.reslovers import range_resolver, depend_resolver\n from datetime import datetime, timedelta\n from gqltst.types import ValidationResult\n\n def date_resolver(context):\n now_date = datetime.now()\n for generated_date in [(now_date - timedelta(days=1)).strftime(\"%Y-%m-%d %H:%M:%S\"),\n (now_date - timedelta(days=2)).strftime(\"%Y-%m-%d %H:%M:%S\")]:\n yield generated_date\n\n args = {\n \"environment\": {\n \"token\": range_resolver([\"token1\", \"token2\"]),\n \"search\": {\n \"items\": {\n \"name\": range_resolver([\"name1\", None, \"name3\"]),\n \"surname\": depend_resolver(\"$environment_search_items_name\", None, [\"A\", \"B\"], [None]),\n \"dateFrom\": date_resolver,\n \"records\": {\n \"first\": range_resolver([0]),\n \"step\": range_resolver([1]),\n }\n }\n }\n }\n }\n\n def test_validator(data, node):\n if data == \"Paul\":\n return [ValidationResult(\"It's not our manager\", node, data))]\n else:\n return []\n\n validators = {\n \"environment.items.surname\": [\n test_validator,\n ],\n }\n\n schema.test(args=args, validators=validators)\n```\n\n## Depensencies\n- [Python HTTP Requests for Humans\u2122](https://github.com/requests/requests) \n\n## ToDo\n\n- Stability\n- Better test result view\n- Refactoring\n- Mutations support\n- Specific resolvers\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://github.com/pyatka/gqltst", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "gqltst", "package_url": "https://pypi.org/project/gqltst/", "platform": "", "project_url": "https://pypi.org/project/gqltst/", "project_urls": { "Homepage": "https://github.com/pyatka/gqltst" }, "release_url": "https://pypi.org/project/gqltst/0.0.8/", "requires_dist": null, "requires_python": "", "summary": "Framework for automatic GraphQL testing. The framework takes url of your GraphQL endpoint, builds schema and generates http queries for testing.", "version": "0.0.8" }, "last_serial": 4438229, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "bd6ecaf9a4cc14448df2086f56b6b728", "sha256": "4846e645c82fddc86c9054a31301fa039d7cc3fb30169e3640c5732b4a0a1fee" }, "downloads": -1, "filename": "gqltst-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "bd6ecaf9a4cc14448df2086f56b6b728", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7351, "upload_time": "2018-10-30T19:19:42", "url": "https://files.pythonhosted.org/packages/c0/d2/4b3365d8f8f17d0dfc06dba68f498a30d2851df5032f5af277d993271f2e/gqltst-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8ef1e0f1552c959030964deb37170191", "sha256": "110fb54b3fdeba92f648a6591888c54d8c2c4a9e09a5df5e063f012d43e67fae" }, "downloads": -1, "filename": "gqltst-0.0.1.tar.gz", "has_sig": false, "md5_digest": "8ef1e0f1552c959030964deb37170191", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5221, "upload_time": "2018-10-30T19:19:43", "url": "https://files.pythonhosted.org/packages/81/18/755731d0b234feffe7c84a7a62305092d02c6f966a71bba98e7adb0af736/gqltst-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "764978b5ffcf570084908de11bb6c929", "sha256": "a0b51b9b37b4005d8b92674e46c7ad311e4e5223c64893fad21d8e17f0b11cd8" }, "downloads": -1, "filename": "gqltst-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "764978b5ffcf570084908de11bb6c929", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7368, "upload_time": "2018-10-30T19:30:34", "url": "https://files.pythonhosted.org/packages/52/15/3abbd39ff9e88d1f3ab55ed8bae94a4f3a93bbdb3522ca63852c0f9a6c08/gqltst-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8ddc937ae9f555e01964ad210e8ba9e6", "sha256": "bd60cdc36a21e9fcaeacb9ce6cf6d82a8fdec9a0a4ba1e4739c74ef6653e305b" }, "downloads": -1, "filename": "gqltst-0.0.2.tar.gz", "has_sig": false, "md5_digest": "8ddc937ae9f555e01964ad210e8ba9e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5238, "upload_time": "2018-10-30T19:30:36", "url": "https://files.pythonhosted.org/packages/62/67/d3bab218ea14e3d3f46c4213a75ce9326e9b8dabaf2ec5b941ebe967dd5b/gqltst-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "5747660a9291d2c27522562906bdb1b7", "sha256": "1d870324e56b310fdb59327a3d070c02b4e5975aa731ab85174e6218dc6f9e94" }, "downloads": -1, "filename": "gqltst-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "5747660a9291d2c27522562906bdb1b7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7386, "upload_time": "2018-10-30T19:40:05", "url": "https://files.pythonhosted.org/packages/ea/e6/7e245f58fedfd068fc40b3ae2fbbfaa83905b92b06985a9e5a54ba03da87/gqltst-0.0.3-py3-none-any.whl" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "cc6707a0f2bcffd1b5dee4d38d79c17f", "sha256": "eb3ddc8b85a34b644a6ca3f366125dff6fccb429388e9e7b0ff090fccaf1cb3f" }, "downloads": -1, "filename": "gqltst-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "cc6707a0f2bcffd1b5dee4d38d79c17f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8194, "upload_time": "2018-10-30T20:17:04", "url": "https://files.pythonhosted.org/packages/e9/ae/f25826dd0149efb4f1a89f9e0964b2b1bfa06f50355616220a2e29751f35/gqltst-0.0.4-py3-none-any.whl" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "d10625b218873f19b24b4668c59689c6", "sha256": "9f85bebc1e73fa92c71d0108c19e47572b880b12bdb462ebf437ff109014adf8" }, "downloads": -1, "filename": "gqltst-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "d10625b218873f19b24b4668c59689c6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8512, "upload_time": "2018-10-31T18:53:40", "url": "https://files.pythonhosted.org/packages/0d/3f/ad798deab7ee8f92e2793f633097ceb13a9c1f0bb021bb698bcd5efdb7f9/gqltst-0.0.5-py3-none-any.whl" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "b61bdb04df1981edd527b59c2bff82db", "sha256": "a11a6d1326ded7f87a3ea52174aeae25c2b54cea2e01edfe6ddba295c2b0304c" }, "downloads": -1, "filename": "gqltst-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "b61bdb04df1981edd527b59c2bff82db", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8517, "upload_time": "2018-10-31T19:09:45", "url": "https://files.pythonhosted.org/packages/8f/05/3cff3633b10157e664a3ec93d52f78b7cedb3d1e47c289c9e7f764c0a90e/gqltst-0.0.6-py3-none-any.whl" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "7c0ad0f30a6ff4a2d9200222b23551fd", "sha256": "553c107b77c6aede6840e0030f33a16d5e489f1575436bdc0548d806b5e589a2" }, "downloads": -1, "filename": "gqltst-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "7c0ad0f30a6ff4a2d9200222b23551fd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8581, "upload_time": "2018-10-31T19:53:12", "url": "https://files.pythonhosted.org/packages/7a/f3/dd9e34aa8513c8006810854563a6139a0650dfc8cafe1b9d4650e3d0d5f5/gqltst-0.0.7-py3-none-any.whl" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "0d59a24e397debd0d9d9d9fb6b182d4f", "sha256": "500bcd59189a1b2f0776642338b3a2dffae0903a40afb6498191e18416e3f5de" }, "downloads": -1, "filename": "gqltst-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "0d59a24e397debd0d9d9d9fb6b182d4f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8605, "upload_time": "2018-10-31T20:12:50", "url": "https://files.pythonhosted.org/packages/47/83/de03a2bad655a364ae696f89d6206c74ba18774971d90849a437011cb75c/gqltst-0.0.8-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0d59a24e397debd0d9d9d9fb6b182d4f", "sha256": "500bcd59189a1b2f0776642338b3a2dffae0903a40afb6498191e18416e3f5de" }, "downloads": -1, "filename": "gqltst-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "0d59a24e397debd0d9d9d9fb6b182d4f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8605, "upload_time": "2018-10-31T20:12:50", "url": "https://files.pythonhosted.org/packages/47/83/de03a2bad655a364ae696f89d6206c74ba18774971d90849a437011cb75c/gqltst-0.0.8-py3-none-any.whl" } ] }