{ "info": { "author": "numirias", "author_email": "numirias@users.noreply.github.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Framework :: Pytest", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# Pytest JSON Report\n\n[![Build Status](https://travis-ci.org/numirias/pytest-json-report.svg?branch=master)](https://travis-ci.org/numirias/pytest-json-report)\n[![codecov](https://codecov.io/gh/numirias/pytest-json-report/branch/master/graph/badge.svg)](https://codecov.io/gh/numirias/pytest-json-report)\n[![PyPI Version](https://img.shields.io/pypi/v/pytest-json-report.svg)](https://pypi.python.org/pypi/pytest-json-report)\n[![Python Versions](https://img.shields.io/pypi/pyversions/pytest-json-report.svg)](https://pypi.python.org/pypi/pytest-json-report)\n\nThis pytest plugin creates test reports as JSON. This makes it easy to process test results in other applications.\n\nIt can report a summary, test details, captured output, logs, exception tracebacks and more. Additionally, you can use the available fixtures and hooks to [add metadata](#metadata) and [customize](#modifying-the-report) the report as you like.\n\n## Table of contents\n\n* [Installation](#installation)\n* [Options](#options)\n* [Usage](#usage)\n * [Metadata](#metadata)\n * [Modifying the report](#modifying-the-report)\n * [Direct invocation](#direct-invocation)\n* [Format](#format)\n * [Summary](#summary)\n * [Environment](#environment)\n * [Collectors](#collectors)\n * [Tests](#tests)\n * [Test stage](#test-stage)\n * [Log](#log)\n * [Warnings](#warnings)\n* [Related tools](#related-tools)\n\n## Installation\n\n```\npip install pytest-json-report --upgrade \n```\n\n## Options\n\n| Option | Description |\n| --- | --- |\n| `--json-report` | Create JSON report |\n| `--json-report-file=PATH` | Target path to save JSON report (use \"none\" to not save the report) |\n| `--json-report-summary` | Just create a summary without per-test details |\n| `--json-report-omit=FIELD_LIST` | List of fields to omit in the report (choose from: `collectors`, `log`, `traceback`, `streams`, `warnings`, `keywords`) |\n| `--json-report-indent=LEVEL` | Pretty-print JSON with specified indentation level |\n\n## Usage\n\nJust run pytest with `--json-report`. The report is saved in `.report.json` by default.\n\n```bash\n$ pytest --json-report -v tests/\n$ cat .report.json\n{\"created\": 1518371686.7981803, ... \"tests\":[{\"nodeid\": \"test_foo.py\", \"outcome\": \"passed\", ...}, ...]}\n```\n\nIf you just need to know how many tests passed or failed and don't care about details, you can produce a summary only:\n\n```bash\n$ pytest --json-report --json-report-summary\n```\n\nMany fields can be omitted to keep the report size small. E.g., this will leave out keywords and stdout/stderr output:\n\n```bash\n$ pytest --json-report --json-report-omit keywords streams\n```\n\nIf you don't like to have the report saved, you can specify `none` as the target file name:\n\n```bash\n$ pytest --json-report --json-report-file none\n```\n\n### Metadata\n\nYou can add your own metadata to a test item by using the `json_metadata` test fixture:\n\n```python\ndef test_something(json_metadata):\n json_metadata['foo'] = {\"some\": \"thing\"}\n json_metadata['bar'] = 123\n```\n\nOr you can use the `pytest_json_runtest_metadata` hook (in your `conftest.py`) to add metadata based on the current test run. The dict returned will be automatically added to the existing metadata. E.g., this adds the start and stop time of each test's `call` stage to the metadata:\n\n```python\ndef pytest_json_runtest_metadata(item, call):\n if call.when != 'call':\n return {}\n return {'start': call.start, 'stop': call.stop}\n```\n\nAlso, you could add metadata using [pytest-metadata's `--metadata` switch](https://github.com/pytest-dev/pytest-metadata#additional-metadata) which will add metadata to the report's `environment` section, but not to a specific test item. You need to make sure all your metadata is JSON-serializable.\n\n### Modifying the report\n\nYou can modify the entire report before it's saved by using the `pytest_json_modifyreport` hook.\n\nJust implement the hook in your `conftest.py`, e.g.:\n\n```python\ndef pytest_json_modifyreport(json_report):\n # Add a key to the report\n json_report['foo'] = 'bar'\n # Delete the summary from the report\n del json_report['summary']\n```\n\nAfter `pytest_sessionfinish`, the report object is also directly available to script via `config._json_report.report`. So you can access it using some built-in hook:\n\n```python\ndef pytest_sessionfinish(session):\n report = session.config._json_report.report\n print(report['exitcode'])\n ...\n```\n\nIf you *really* want to change how the result of a test stage run is turned into JSON, you can use the `pytest_json_runtest_stage` hook. It takes a [`TestReport`](https://docs.pytest.org/en/latest/reference.html#_pytest.runner.TestReport) and returns a JSON-serializable dict:\n\n```python\ndef pytest_json_runtest_stage(report):\n return {'outcome': report.outcome}\n```\n\n### Direct invocation\n\nYou can also use the plugin when invoking `pytest.main()` directly from code:\n\n```python\nimport pytest\nfrom pytest_jsonreport.plugin import JSONReport\n\nplugin = JSONReport()\npytest.main(['test_foo.py'], plugins=[plugin])\n\n```\n\nYou can then access the `report` object:\n\n```python\nprint(plugin.report)\n```\n\nAnd save the report manually:\n\n```python\nplugin.save_report('/tmp/my_report.json')\n```\n\n\n## Format\n\nThe JSON report contains metadata of the session, a summary, collectors, tests and warnings. You can find a sample report in [`sample_report.json`](sample_report.json).\n\n| Key | Description |\n| --- | --- |\n| `created` | Report creation date. (Unix time) |\n| `duration` | Session duration in seconds. |\n| `exitcode` | Process exit code as listed [in the pytest docs](https://docs.pytest.org/en/latest/usage.html#possible-exit-codes). The exit code is a quick way to tell if any tests failed, an internal error occurred, etc. |\n| `root` | Absolute root path from which the session was started. |\n| `environment` | [Environment](#environment) entry. |\n| `summary` | [Summary](#summary) entry. |\n| `collectors` | [Collectors](#collectors) entry. (absent if `--json-report-summary` or if no collectors) |\n| `tests` | [Tests](#tests) entry. (absent if `--json-report-summary`) |\n| `warnings` | [Warnings](#warnings) entry. (absent if `--json-report-summary` or if no warnings) |\n\n#### Example\n\n```python\n{\n \"created\": 1518371686.7981803,\n \"duration\": 0.1235666275024414,\n \"exitcode\": 1,\n \"root\": \"/path/to/tests\",\n \"environment\": ENVIRONMENT,\n \"summary\": SUMMARY,\n \"collectors\": COLLECTORS,\n \"tests\": TESTS,\n \"warnings\": WARNINGS,\n}\n```\n\n### Summary\n\nNumber of outcomes per category and the total number of test items.\n\n| Key | Description |\n| --- | --- |\n| `` | Number of tests with that outcome. (absent if number is 0) |\n| `total` | Total number of tests. |\n\n#### Example\n\n```python\n{\n \"passed\": 2,\n \"failed\": 3,\n \"xfailed\": 1,\n \"xpassed\": 1,\n \"error\": 2,\n \"skipped\": 1,\n \"total\": 10\n}\n```\n\n### Environment\n\nThe environment section is provided by [pytest-metadata](https://github.com/pytest-dev/pytest-metadata). All metadata given by that plugin will be added here, so you need to make sure it is JSON-serializable.\n\n#### Example\n\n```python\n{\n \"Python\": \"3.6.4\",\n \"Platform\": \"Linux-4.56.78-9-ARCH-x86_64-with-arch\",\n \"Packages\": {\n \"pytest\": \"3.4.0\",\n \"py\": \"1.5.2\",\n \"pluggy\": \"0.6.0\"\n },\n \"Plugins\": {\n \"json-report\": \"0.4.1\",\n \"xdist\": \"1.22.0\",\n \"metadata\": \"1.5.1\",\n \"forked\": \"0.2\",\n \"cov\": \"2.5.1\"\n },\n \"foo\": \"bar\", # Custom metadata entry passed via pytest-metadata\n}\n```\n\n### Collectors\n\nA list of collector nodes. These are useful to check what tests are available without running them, or to debug an error during test discovery.\n\n| Key | Description |\n| --- | --- |\n| `nodeid` | ID of the collector node. ([See docs](https://docs.pytest.org/en/latest/example/markers.html#node-id)) The root node has an empty node ID. |\n| `outcome` | Outcome of the collection. (Not the test outcome!) |\n| `result` | Nodes collected by the collector. |\n| `longrepr` | Representation of the collection error. (absent if no error occurred) |\n\nThe `result` is a list of the collected nodes:\n\n| Key | Description |\n| --- | --- |\n| `nodeid` | ID of the node. |\n| `type` | Type of the collected node. |\n| `lineno` | Line number. (absent if not applicable) |\n\n#### Example\n\n```python\n[\n {\n \"nodeid\": \"\",\n \"outcome\": \"passed\",\n \"result\": [\n {\n \"nodeid\": \"test_foo.py\",\n \"type\": \"Module\"\n }\n ]\n },\n {\n \"nodeid\": \"test_foo.py\",\n \"outcome\": \"passed\",\n \"result\": [\n {\n \"nodeid\": \"test_foo.py::test_pass\",\n \"type\": \"Function\",\n \"lineno\": 24,\n },\n ...\n ]\n },\n {\n \"nodeid\": \"test_bar.py\",\n \"outcome\": \"failed\",\n \"result\": [],\n \"longrepr\": \"/usr/lib/python3.6 ... invalid syntax\"\n },\n ...\n]\n```\n\n### Tests\n\nA list of test nodes. Each completed test stage produces a stage object (`setup`, `call`, `teardown`) with its own `outcome`.\n\n| Key | Description |\n| --- | --- |\n| `nodeid` | ID of the test node. |\n| `lineno` | Line number where the test starts. |\n| `keywords` | List of keywords and markers associated with the test. |\n| `outcome` | Outcome of the test run. |\n| `{setup, call, teardown}` | [Test stage](#test-stage) entry. To find the error in a failed test you need to check all stages. (absent if stage didn't run) |\n| `metadata` | [Metadata](#metadata) item. (absent if no metadata) |\n\n#### Example\n\n```python\n[\n {\n \"nodeid\": \"test_foo.py::test_fail\",\n \"lineno\": 50,\n \"keywords\": [\n \"test_fail\",\n \"test_foo.py\",\n \"test_foo0\"\n ],\n \"outcome\": \"failed\",\n \"setup\": TEST_STAGE,\n \"call\": TEST_STAGE,\n \"teardown\": TEST_STAGE,\n \"metadata\": {\n \"foo\": \"bar\",\n }\n },\n ...\n]\n```\n\n\n### Test stage\n\nA test stage item.\n\n| Key | Description |\n| --- | --- |\n| `duration` | Duration of the test stage in seconds. |\n| `outcome` | Outcome of the test stage. (can be different from the overall test outcome) |\n| `crash` | Crash entry. (absent if no error occurred) |\n| `traceback` | List of traceback entries. (absent if no error occurred) |\n| `stdout` | Standard output. (absent if none available) |\n| `stderr` | Standard error. (absent if none available) |\n| `log` | [Log](#log) entry. (absent if none available) |\n| `longrepr` | Representation of the error. (absent if no error occurred) |\n\n#### Example\n\n```python\n{\n \"duration\": 0.00018835067749023438,\n \"outcome\": \"failed\",\n \"crash\": {\n \"path\": \"/path/to/tests/test_foo.py\",\n \"lineno\": 54,\n \"message\": \"TypeError: unsupported operand type(s) for -: 'int' and 'NoneType'\"\n },\n \"traceback\": [\n {\n \"path\": \"test_foo.py\",\n \"lineno\": 65,\n \"message\": \"\"\n },\n {\n \"path\": \"test_foo.py\",\n \"lineno\": 63,\n \"message\": \"in foo\"\n },\n {\n \"path\": \"test_foo.py\",\n \"lineno\": 63,\n \"message\": \"in \"\n },\n {\n \"path\": \"test_foo.py\",\n \"lineno\": 54,\n \"message\": \"TypeError\"\n }\n ],\n \"stdout\": \"foo\\nbar\\n\",\n \"stderr\": \"baz\\n\",\n \"log\": LOG,\n \"longrepr\": \"def test_fail_nested():\\n ...\"\n}\n```\n\n### Log\n\nA list of log records. The fields of a log record are the [`logging.LogRecord` attributes](https://docs.python.org/3/library/logging.html#logrecord-attributes), with the exception that the fields `exc_info` and `args` are always empty and `msg` contains the formatted log message.\n\nYou can apply [`logging.makeLogRecord()`](https://docs.python.org/3/library/logging.html#logging.makeLogRecord) on a log record to convert it back to a `logging.LogRecord` object.\n\n#### Example\n\n```python\n[\n {\n \"name\": \"root\",\n \"msg\": \"This is a warning.\",\n \"args\": null,\n \"levelname\": \"WARNING\",\n \"levelno\": 30,\n \"pathname\": \"/path/to/tests/test_foo.py\",\n \"filename\": \"test_foo.py\",\n \"module\": \"test_foo\",\n \"exc_info\": null,\n \"exc_text\": null,\n \"stack_info\": null,\n \"lineno\": 8,\n \"funcName\": \"foo\",\n \"created\": 1519772464.291738,\n \"msecs\": 291.73803329467773,\n \"relativeCreated\": 332.90839195251465,\n \"thread\": 140671803118912,\n \"threadName\": \"MainThread\",\n \"processName\": \"MainProcess\",\n \"process\": 31481\n },\n ...\n]\n```\n\n\n### Warnings\n\nA list of warnings that occurred during the session. (See the [pytest docs on warnings](https://docs.pytest.org/en/latest/warnings.html).)\n\n| Key | Description |\n| --- | --- |\n| `filename` | File name. |\n| `lineno` | Line number. |\n| `message` | Warning message. |\n| `when` | When the warning was captured. (`\"config\"`, `\"collect\"` or `\"runtest\"` as listed [here](https://docs.pytest.org/en/latest/reference.html#_pytest.hookspec.pytest_warning_captured)) |\n\n#### Example\n\n```python\n[\n {\n \"code\": \"C1\",\n \"path\": \"/path/to/tests/test_foo.py\",\n \"nodeid\": \"test_foo.py::TestFoo\",\n \"message\": \"cannot collect test class 'TestFoo' because it has a __init__ constructor\"\n }\n]\n```\n\n## Related tools\n\n- [pytest-json](https://github.com/mattcl/pytest-json) has some great features but appears to be unmaintained. I borrowed some ideas and test cases from there.\n\n- [tox has a swtich](http://tox.readthedocs.io/en/latest/example/result.html) to create a JSON report including a test result summary. However, it just provides the overall outcome without any per-test details.\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://github.com/numirias/pytest-json-report", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pytest-json-report", "package_url": "https://pypi.org/project/pytest-json-report/", "platform": "", "project_url": "https://pypi.org/project/pytest-json-report/", "project_urls": { "Homepage": "https://github.com/numirias/pytest-json-report" }, "release_url": "https://pypi.org/project/pytest-json-report/1.1.0/", "requires_dist": [ "pytest (>=4.2.0)", "pytest-metadata" ], "requires_python": "", "summary": "A pytest plugin to report test results as JSON files", "version": "1.1.0" }, "last_serial": 5495424, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "210279a340c70d85b7225c8457fa41eb", "sha256": "48c971d3dc8e063980d37fb15e520f6273e8ecfcaef7ef94d3d6b8236f3cdc46" }, "downloads": -1, "filename": "pytest_json_report-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "210279a340c70d85b7225c8457fa41eb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3254, "upload_time": "2018-01-18T02:24:50", "url": "https://files.pythonhosted.org/packages/e6/54/484ec0214d476fb74e95a4a5f92b480be25551e7e28ccdff8804da577564/pytest_json_report-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f105877d9fb05ef0b8e60dbf114528a9", "sha256": "d762be14d12c8dca87e99788b4af55064ac750c51f794467d3b8c18f44556ec5" }, "downloads": -1, "filename": "pytest-json-report-0.1.tar.gz", "has_sig": false, "md5_digest": "f105877d9fb05ef0b8e60dbf114528a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1789, "upload_time": "2018-01-18T02:24:51", "url": "https://files.pythonhosted.org/packages/41/9b/141d9ecbb0a4ca0843fe99024ed73ac2d1aecb5c902b3c5096b90ee8d2de/pytest-json-report-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "9167c852c9d2c7b75e13113a269a2962", "sha256": "983d718e879fdf2ed36878c77f8c1c3ea1c1c61513c584eba83018917649bcf9" }, "downloads": -1, "filename": "pytest_json_report-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "9167c852c9d2c7b75e13113a269a2962", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3294, "upload_time": "2018-01-18T03:32:54", "url": "https://files.pythonhosted.org/packages/9d/4d/bab4648d630160d47a00515db6b4b622921e5b24e58a16629ad52eacee5b/pytest_json_report-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c5aac2c070760e11b535e01b6096f973", "sha256": "745e239a83256fe58b9c710ab9572412ef72976ea9e1d151e791065c7c8127c8" }, "downloads": -1, "filename": "pytest-json-report-0.2.tar.gz", "has_sig": false, "md5_digest": "c5aac2c070760e11b535e01b6096f973", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2340, "upload_time": "2018-01-18T03:32:56", "url": "https://files.pythonhosted.org/packages/5b/7e/aec8bf3b7ba279dcc89c53c893b61c408ac72200bb92e4cd2f46997f6149/pytest-json-report-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "1c68131d835171e43d4e95d14dd0ff47", "sha256": "c2ae129a2ea676f799c563b82901b99b7180a00abaf937ac54abcc7f37221fa3" }, "downloads": -1, "filename": "pytest_json_report-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "1c68131d835171e43d4e95d14dd0ff47", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3857, "upload_time": "2018-01-19T04:23:25", "url": "https://files.pythonhosted.org/packages/b7/20/ce588d67f9efea4eb371e4cd75c45b71eb286fcadeaad7043c86fbdebcae/pytest_json_report-0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d398866652800e16402964f15007e1aa", "sha256": "ecd2fd3f70c08a52fe107eba4c9bbeb7ef273017dd50b9ca7f091e71f41c7cf1" }, "downloads": -1, "filename": "pytest-json-report-0.3.tar.gz", "has_sig": false, "md5_digest": "d398866652800e16402964f15007e1aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3158, "upload_time": "2018-01-19T04:23:26", "url": "https://files.pythonhosted.org/packages/bb/e4/88f820b82d47f8af6ed518a6cfc633072bbd4b145a2fbc71b534c6048aa9/pytest-json-report-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "79900617884f6140502d8d572445d4d1", "sha256": "a666f342953cedbc2f85fdea2a52f1586a6f05cb40fbae74581aa5064cf5693f" }, "downloads": -1, "filename": "pytest_json_report-0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "79900617884f6140502d8d572445d4d1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4713, "upload_time": "2018-01-21T01:04:45", "url": "https://files.pythonhosted.org/packages/15/01/62b10d895c20b9bc452cdbf9d038f8ad7b472477dc12b80bb670854836dd/pytest_json_report-0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f6b95f85315b3a49fd8e79454b5791b3", "sha256": "33018dc68d8531dde55c83fabeeef23605e3509a4333eca843c0f1a4b91e4925" }, "downloads": -1, "filename": "pytest-json-report-0.4.tar.gz", "has_sig": false, "md5_digest": "f6b95f85315b3a49fd8e79454b5791b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4427, "upload_time": "2018-01-21T01:04:47", "url": "https://files.pythonhosted.org/packages/99/b6/9d96972b29287c78587eb9b310e68f4f7438ad6edf248c1ef593f9c139f8/pytest-json-report-0.4.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "0d882e54ef0b3ca7af8fc7ea9353dec9", "sha256": "0e734f652e56e8f5323678781dbe16e7d7f0aa64e317f13192b3b4adaeec7438" }, "downloads": -1, "filename": "pytest_json_report-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0d882e54ef0b3ca7af8fc7ea9353dec9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4750, "upload_time": "2018-01-21T18:17:02", "url": "https://files.pythonhosted.org/packages/c8/1b/50a269d936f1874141d59dbe42bad4c99f6fc711fdae00787d606ab3186e/pytest_json_report-0.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8f26a4691e7441656d7706d6197f94a7", "sha256": "96261582371288f62135f5fb1ccfec089e405a6ae1b504d0b53367b298516547" }, "downloads": -1, "filename": "pytest-json-report-0.4.1.tar.gz", "has_sig": false, "md5_digest": "8f26a4691e7441656d7706d6197f94a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4549, "upload_time": "2018-01-21T18:17:03", "url": "https://files.pythonhosted.org/packages/e6/30/15b59eca90d5d0945d7248323925e8fbfac91c23da2cc536a24a352c6652/pytest-json-report-0.4.1.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "240e0547a6b8b92d8f1c3dfb8a967fc7", "sha256": "f4a430e3d334b8e65bbd60d64c481993c83efc8b9e4aaed66354d97a33cb120c" }, "downloads": -1, "filename": "pytest_json_report-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "240e0547a6b8b92d8f1c3dfb8a967fc7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5471, "upload_time": "2018-02-11T19:56:25", "url": "https://files.pythonhosted.org/packages/ff/6c/ec3044edbe3e9dbb7fcc7491410b88ca93ff30812efc9a838145b9ae0a33/pytest_json_report-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "16e9e9242ff50bd84dda008fe4d313a2", "sha256": "e7dfc94691cb643421ddca16ccb52e9c894296f9630ae9d2cf2a05b770ac6b7c" }, "downloads": -1, "filename": "pytest-json-report-0.5.0.tar.gz", "has_sig": false, "md5_digest": "16e9e9242ff50bd84dda008fe4d313a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6350, "upload_time": "2018-02-11T19:56:26", "url": "https://files.pythonhosted.org/packages/33/7b/2a7e0eeef17806f44e979caf77393c7ced4bcba67d16fd0e2016de11cc46/pytest-json-report-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "2d5b0d51311b7515119c041bc2b9597a", "sha256": "0c174a14a85b5ac41e798369286b156104b5fc13bd18a248fdbd99fcd9c43471" }, "downloads": -1, "filename": "pytest_json_report-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2d5b0d51311b7515119c041bc2b9597a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5854, "upload_time": "2018-02-28T02:12:17", "url": "https://files.pythonhosted.org/packages/f9/ba/478f049cfce7fa56b9a8177922c047af28c552e9bbf7e9bf5c9349985cfd/pytest_json_report-0.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f6e67150742e3273ac6678de6fc7ed8d", "sha256": "1f4c4653ef2f9baa1e7284aea81f547901311258b2dd4913d02803dbdfa54055" }, "downloads": -1, "filename": "pytest-json-report-0.6.0.tar.gz", "has_sig": false, "md5_digest": "f6e67150742e3273ac6678de6fc7ed8d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7549, "upload_time": "2018-02-28T02:12:19", "url": "https://files.pythonhosted.org/packages/fe/40/515d487ceddad49e6b944b18555bf3136ca13ab75b5c9fca4b4405b7c14a/pytest-json-report-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "24eea7bcc19bcd2636c32ca1ca020142", "sha256": "737e1c2f72eaf76382f6f306dbd98bef667d1bdc1f3eb37b5257abb6931b5ff6" }, "downloads": -1, "filename": "pytest_json_report-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "24eea7bcc19bcd2636c32ca1ca020142", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5926, "upload_time": "2018-03-16T19:14:59", "url": "https://files.pythonhosted.org/packages/82/af/bd743ddab9a6b8c6efaf16560626a70b944e42a92283f22ce4bc9cb74b89/pytest_json_report-0.7.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dbf476a3515ad8a9971e276375898af2", "sha256": "c2fec74c863a6541a5255c022cca99fa834fc215db334802a8875199a775b8cd" }, "downloads": -1, "filename": "pytest-json-report-0.7.0.tar.gz", "has_sig": false, "md5_digest": "dbf476a3515ad8a9971e276375898af2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7721, "upload_time": "2018-03-16T19:15:01", "url": "https://files.pythonhosted.org/packages/a9/17/7d712f17b489ea0a49cf348b74df47d12cb94e4ec4fec3021d05282e0b50/pytest-json-report-0.7.0.tar.gz" } ], "0.8.0.dev0": [ { "comment_text": "", "digests": { "md5": "f32828870598b14837777283d9576b94", "sha256": "352bbe76c413c2e12824cdf6974828faac451253276f0abab4d1f482365c2708" }, "downloads": -1, "filename": "pytest_json_report-0.8.0.dev0-py3-none-any.whl", "has_sig": false, "md5_digest": "f32828870598b14837777283d9576b94", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5983, "upload_time": "2018-10-17T20:54:08", "url": "https://files.pythonhosted.org/packages/8d/93/4708e7815b0b3591710f127767d5484f74704dccece4d32e5d9ef7558f25/pytest_json_report-0.8.0.dev0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bce264ee4b768df5a1f1f6468570e933", "sha256": "61bde296f6f0f880b0d6ff416be2c6a96d426a5844d37dc728e096f02daefd5e" }, "downloads": -1, "filename": "pytest-json-report-0.8.0.dev0.tar.gz", "has_sig": false, "md5_digest": "bce264ee4b768df5a1f1f6468570e933", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7897, "upload_time": "2018-10-17T20:54:10", "url": "https://files.pythonhosted.org/packages/0f/ab/2efb20d2e05862097832a6443f05e34d7948af6e2c8779dab729ee4848ee/pytest-json-report-0.8.0.dev0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "2ea0710f16a63110cc99379bd00ee44d", "sha256": "b978fe53180fc09a98984c38002a2443637bc67b0f9287bfe3f2b4a13ff30316" }, "downloads": -1, "filename": "pytest_json_report-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "2ea0710f16a63110cc99379bd00ee44d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11076, "upload_time": "2019-01-23T05:18:10", "url": "https://files.pythonhosted.org/packages/00/a0/56b2aef4d41d0488919d206ef8a8e6193e8f0805bf589629b883f9920ba2/pytest_json_report-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "74ae3f46652757d5561b04c7ac69708a", "sha256": "fb7035eb8d81b569cb83b4b21c6455e78cf7f96610dc07a44bc6844a840bf31b" }, "downloads": -1, "filename": "pytest-json-report-1.0.1.tar.gz", "has_sig": false, "md5_digest": "74ae3f46652757d5561b04c7ac69708a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10394, "upload_time": "2019-01-23T05:18:12", "url": "https://files.pythonhosted.org/packages/b7/2d/4f992fab2798463ce3f3225e789e92175ebc3e6e617829b918f431771702/pytest-json-report-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "87075305fb143f4a18f65515f36892ce", "sha256": "0f85cff123a1136a74f3e26cc81e802634d84dd8b0a43f5aa05a1893862f6499" }, "downloads": -1, "filename": "pytest_json_report-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "87075305fb143f4a18f65515f36892ce", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11186, "upload_time": "2019-01-28T18:05:57", "url": "https://files.pythonhosted.org/packages/12/c1/18f1968fc90baa34350de4c8329f105cc15f6580c467505b92b817bebfe7/pytest_json_report-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa3d5ba5fe578a6064d860009d576af8", "sha256": "6eb547bfb7ad992ad38611d9d50954e4a05ed187438af49dd97b0a22d2da2095" }, "downloads": -1, "filename": "pytest-json-report-1.0.2.tar.gz", "has_sig": false, "md5_digest": "aa3d5ba5fe578a6064d860009d576af8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10491, "upload_time": "2019-01-28T18:05:59", "url": "https://files.pythonhosted.org/packages/96/1e/77424f48316c7d0f7381ca82f73ee353b2f61e2c7ef32fccbeae1b3857a3/pytest-json-report-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "51cb8c41f317a33645322bf809d869b0", "sha256": "7e43aa44d9c9bf76741b5a99365a57ec97d6d2b82b3bf4e6e6f17dc48bf61827" }, "downloads": -1, "filename": "pytest_json_report-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "51cb8c41f317a33645322bf809d869b0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11231, "upload_time": "2019-02-04T17:57:11", "url": "https://files.pythonhosted.org/packages/ed/82/b1808d5dd283d293728f45943aa1cc4c86314e28a032283a1661f85d4917/pytest_json_report-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ecdab5eb11c1eac3346e666df314402b", "sha256": "a8d7ebb6a5388917b8484291a50058f0b46c8db35bd11dd2d7746cfcc63a3fa7" }, "downloads": -1, "filename": "pytest-json-report-1.0.3.tar.gz", "has_sig": false, "md5_digest": "ecdab5eb11c1eac3346e666df314402b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10553, "upload_time": "2019-02-04T17:57:13", "url": "https://files.pythonhosted.org/packages/65/8a/877dfcafebc87bd2801ecee46172b1628f2a0cdeec3b206f51b945ea8f3c/pytest-json-report-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "725c2bffa58f56a5c67bac27afaf2db8", "sha256": "b5bf3f24cccffe41733f80792f153e126ec1b48d7d37c932eb260bc12981f90f" }, "downloads": -1, "filename": "pytest_json_report-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "725c2bffa58f56a5c67bac27afaf2db8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11248, "upload_time": "2019-05-31T02:54:19", "url": "https://files.pythonhosted.org/packages/70/4b/fcb0a537ec75f522b443fc5c9925f39ccf39d8462f2302cb651c16d8aae0/pytest_json_report-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0abcc11e987754c5ee460e20f8e650c5", "sha256": "129a561c750e5927b9445bdd388a79162c4d17ef08517e20e254ab89f1a910e8" }, "downloads": -1, "filename": "pytest-json-report-1.0.4.tar.gz", "has_sig": false, "md5_digest": "0abcc11e987754c5ee460e20f8e650c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10566, "upload_time": "2019-05-31T02:54:21", "url": "https://files.pythonhosted.org/packages/f8/cc/1f1646fe1f5ba0004e58ebe35a03cc9b75f937b531a11ca28853d008fd23/pytest-json-report-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "be77d5156d519cb22476b5370fa56b06", "sha256": "4927d16d8faf412248f61180c8bfd0fcad69a669d1c1e0804550818156d5d603" }, "downloads": -1, "filename": "pytest_json_report-1.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "be77d5156d519cb22476b5370fa56b06", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11387, "upload_time": "2019-06-28T20:50:44", "url": "https://files.pythonhosted.org/packages/04/fb/f4ebdc59370e3371516f3712ffeb21289062f5245f7d434b31412afa279d/pytest_json_report-1.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dd87d0cc50dc4ff0506457fddf032827", "sha256": "9152226e9345bda3fb2aeb10071a23def7396f8e4fbf415b09e52259fdc5f3e3" }, "downloads": -1, "filename": "pytest-json-report-1.0.5.tar.gz", "has_sig": false, "md5_digest": "dd87d0cc50dc4ff0506457fddf032827", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10688, "upload_time": "2019-06-28T20:50:46", "url": "https://files.pythonhosted.org/packages/bc/3c/ded5fa0b6ce64461ede06fb23d1ad1a8d3c70295e598a440e223ad10d4e9/pytest-json-report-1.0.5.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "b3e487a1b14a1cec874f22822b538293", "sha256": "b3ef55e1bbabd98fa4e8c80bc6871abfd1a7193ad4f9c13a862929c49efbe845" }, "downloads": -1, "filename": "pytest_json_report-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b3e487a1b14a1cec874f22822b538293", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11891, "upload_time": "2019-07-06T19:13:14", "url": "https://files.pythonhosted.org/packages/de/68/5ddf583c556158bf9dac8a8683a03e1c4d1d980ede9f11fb2dd3d42312f9/pytest_json_report-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a9abdad6de0a4cacb99488d94a7bab73", "sha256": "64d7fe55b559317f2c8cf871184c03579fdeb4d1e96644338ad64fcf2045dc16" }, "downloads": -1, "filename": "pytest-json-report-1.1.0.tar.gz", "has_sig": false, "md5_digest": "a9abdad6de0a4cacb99488d94a7bab73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12420, "upload_time": "2019-07-06T19:13:16", "url": "https://files.pythonhosted.org/packages/9e/45/1cae838f8f5a127240a375053992f1deb55a5781b36ebad2ca254e008417/pytest-json-report-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b3e487a1b14a1cec874f22822b538293", "sha256": "b3ef55e1bbabd98fa4e8c80bc6871abfd1a7193ad4f9c13a862929c49efbe845" }, "downloads": -1, "filename": "pytest_json_report-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b3e487a1b14a1cec874f22822b538293", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11891, "upload_time": "2019-07-06T19:13:14", "url": "https://files.pythonhosted.org/packages/de/68/5ddf583c556158bf9dac8a8683a03e1c4d1d980ede9f11fb2dd3d42312f9/pytest_json_report-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a9abdad6de0a4cacb99488d94a7bab73", "sha256": "64d7fe55b559317f2c8cf871184c03579fdeb4d1e96644338ad64fcf2045dc16" }, "downloads": -1, "filename": "pytest-json-report-1.1.0.tar.gz", "has_sig": false, "md5_digest": "a9abdad6de0a4cacb99488d94a7bab73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12420, "upload_time": "2019-07-06T19:13:16", "url": "https://files.pythonhosted.org/packages/9e/45/1cae838f8f5a127240a375053992f1deb55a5781b36ebad2ca254e008417/pytest-json-report-1.1.0.tar.gz" } ] }