{ "info": { "author": "Alexander Kozhevnikov", "author_email": "mentalisttraceur@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Robot Framework :: Library", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Software Development :: Testing" ], "description": "Robot Framework Dependency Library\n==================================\n\nDeclare dependencies between tests. Make tests automatically fail based\non the results of other test cases or test suites.\n\nAlthough I strongly recommend that people write tests to be independent,\nsometimes, dependencies between tests are the simplest and easiest model\nto implement, and having tests fail-fast if one or more previous test\ncases didn't get the expected result can be beneficial.\n\n\nVersioning\n----------\n\nThis library's version numbers follow the `SemVer 2.0.0 specification\n`_.\n\n\nInstallation\n------------\n\n::\n\n pip install robotframework-dependencylibrary\n\n\nUsage\n-----\n\nFirst, include the library in your tests:\n\n.. code:: robotframework\n\n *** Settings ***\n Library DependencyLibrary\n\nLet's say you have a passing and failing test:\n\n.. code:: robotframework\n\n *** Test cases ***\n Passing Test\n No operation\n\n Failing Test\n Fail This test is intentionally hardcoded to fail\n\nA basic test that depends on the passing test looks like this:\n\n.. code:: robotframework\n\n *** Test cases ***\n This Test Depends on \"Passing Test\" Passing\n Depends on test Passing Test\n Log The rest of the keywords in this test will run as normal.\n\nOf course, you can depend on a test failure instead:\n\n.. code:: robotframework\n\n *** Test cases ***\n This Test Depends on \"Failing Test\" Failing\n Depends on test failure Failing Test\n Log The rest of the keywords in this test will run as normal.\n\nYou can also depend on the status of a test suite:\n\n.. code:: robotframework\n\n *** Test cases ***\n This Test Depends on an Entire Test Suite Passing\n Depends on suite My Test Suite Name\n Log The rest of the keywords in this test will run as normal.\n\n\nFailures\n--------\n\nSince the ``Depends on ...`` keywords fail when the dependency is not\nmet, it supports all the usual logic you'd expect from Robot Framework:\n\nThe test case automatically aborts with a failure when the ``Depends on\n...`` keyword fails as you'd expect, unless you capture the status and\nerror message using something like ``Run keyword and expect error``.\n\n\nError Messages\n--------------\n\nThe error messages are documented (and are considered part of the\ninterface, so you can rely on `SemVer` semantics: the major version\nnumber will be bumped if the logic for error messages ever changes):\n\nIf a test failed when you expected it to pass, you'll get a helpful error:\n\n.. code:: robotframework\n\n *** Test cases ***\n This Test Depends on \"Failing Test\" Passing\n Depends on test Failing Test\n Log The rest of the keywords (including this log) will NOT run!\n\nThe error message will be::\n\n Dependency not met: test case 'Failing Test' state is 'FAIL', wanted 'PASS'\n\nSame with expecting a passing test to fail:\n\n.. code:: robotframework\n\n *** Test cases ***\n This Test Depends on \"Passing Test\" Failing\n Depends on test failure Passing Test\n Log The rest of the keywords (including this log) will NOT run!\n\nThe error message will be::\n\n Dependency not met: test case 'Passing Test' state is 'PASS', wanted 'FAIL'\n\nIf you typo a test, or try to depend on the status of the test before\nit's been run, for example:\n\n.. code:: robotframework\n\n *** Test cases ***\n Depends on Non-Existant Test Case\n Depends on test Misnamed Test\n\nThe error message will be::\n\n Dependency not met: test case 'Misnamed Test' not found, wanted 'PASS'\n\nIf you accidentally make a test depend on itself, it will give a similar\nerror message that more precisely identifies the error:\n\n.. code:: robotframework\n\n *** Test cases ***\n Depends on self\n Depends on test Depends on self\n\nThe error message will be::\n\n Dependency not met: test case 'Depends on self' mid-execution, wanted 'PASS'\n\nAll test suite error messages are the same, except that they use the\nwords \"test suite\" instead of \"test case\".\n\n.. note::\n\n If you need to programmatically parse the error messages, keep in\n mind that test case and suite names and statuses are quoted using\n logic equivalent to the Python built-in function ``repr``.\n\n\nExtras\n------\n\nFor symmetry with ``Depends on test failure``, the keyword ``Depends on\ntest success`` is available as a synonym for ``Depends on test``:\n\n.. code:: robotframework\n\n *** Test cases ***\n This Test Depends on \"Passing Test\" Passing (using alternate keyword)\n Depends on test success Passing Test\n Log The rest of the keywords in this test will run as normal.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mentalisttraceur/robotframework-dependencylibrary", "keywords": "", "license": "0BSD (BSD Zero Clause License)", "maintainer": "", "maintainer_email": "", "name": "robotframework-dependencylibrary", "package_url": "https://pypi.org/project/robotframework-dependencylibrary/", "platform": "", "project_url": "https://pypi.org/project/robotframework-dependencylibrary/", "project_urls": { "Homepage": "https://github.com/mentalisttraceur/robotframework-dependencylibrary" }, "release_url": "https://pypi.org/project/robotframework-dependencylibrary/1.0.0.post1/", "requires_dist": [ "robotframework" ], "requires_python": "", "summary": "Declare dependencies between Robot Framework tests", "version": "1.0.0.post1" }, "last_serial": 3940570, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "41d228a32606893fdf447ad7a230f275", "sha256": "bef923dec44db886bbf6662042670a252a4a1bf6ca69a35a1f877e362f91fe19" }, "downloads": -1, "filename": "robotframework_dependencylibrary-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "41d228a32606893fdf447ad7a230f275", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6583, "upload_time": "2018-06-07T17:38:56", "url": "https://files.pythonhosted.org/packages/00/7f/eaed781daef24e48efe4334cf3b1c95a34fc1bc3554c5d63c815f02db002/robotframework_dependencylibrary-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4bb3da63bcdbce7c52b7516aec3b0368", "sha256": "8ff09649cab5945ef97ae553cc701a150b0fb1d313181c1a3314d99744384068" }, "downloads": -1, "filename": "robotframework-dependencylibrary-1.0.0.tar.gz", "has_sig": false, "md5_digest": "4bb3da63bcdbce7c52b7516aec3b0368", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4446, "upload_time": "2017-12-22T06:16:02", "url": "https://files.pythonhosted.org/packages/a1/e7/49027e1b0b6467aa42faf21a920bbc5e938be8fd76d9984240e41f8c3ebb/robotframework-dependencylibrary-1.0.0.tar.gz" } ], "1.0.0.post1": [ { "comment_text": "", "digests": { "md5": "a5f771c6209c1ab94520dc6a06f5c833", "sha256": "1c59dffaf1ed30be3ad5e8b4ad5696f276754cf476ffee4e782d7c436d02dc39" }, "downloads": -1, "filename": "robotframework_dependencylibrary-1.0.0.post1-py3-none-any.whl", "has_sig": false, "md5_digest": "a5f771c6209c1ab94520dc6a06f5c833", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6674, "upload_time": "2018-06-07T17:55:38", "url": "https://files.pythonhosted.org/packages/7c/46/c09b5ebb178a85bdeba8d0e66d4b6747657bacbc96cec01c2aedf43d0b82/robotframework_dependencylibrary-1.0.0.post1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "66c889bbb794d98fd07f4f0daf57d001", "sha256": "2fd9a203f740a74c5427787ea19a86e4c76cebd5f9b1459f5290172cc13c8ecd" }, "downloads": -1, "filename": "robotframework-dependencylibrary-1.0.0.post1.tar.gz", "has_sig": false, "md5_digest": "66c889bbb794d98fd07f4f0daf57d001", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4229, "upload_time": "2018-06-07T17:55:41", "url": "https://files.pythonhosted.org/packages/56/7d/2491fca1127f6a042a2ba8da91f349f0d42cfc911ff9aab24c6b1c73593d/robotframework-dependencylibrary-1.0.0.post1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a5f771c6209c1ab94520dc6a06f5c833", "sha256": "1c59dffaf1ed30be3ad5e8b4ad5696f276754cf476ffee4e782d7c436d02dc39" }, "downloads": -1, "filename": "robotframework_dependencylibrary-1.0.0.post1-py3-none-any.whl", "has_sig": false, "md5_digest": "a5f771c6209c1ab94520dc6a06f5c833", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6674, "upload_time": "2018-06-07T17:55:38", "url": "https://files.pythonhosted.org/packages/7c/46/c09b5ebb178a85bdeba8d0e66d4b6747657bacbc96cec01c2aedf43d0b82/robotframework_dependencylibrary-1.0.0.post1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "66c889bbb794d98fd07f4f0daf57d001", "sha256": "2fd9a203f740a74c5427787ea19a86e4c76cebd5f9b1459f5290172cc13c8ecd" }, "downloads": -1, "filename": "robotframework-dependencylibrary-1.0.0.post1.tar.gz", "has_sig": false, "md5_digest": "66c889bbb794d98fd07f4f0daf57d001", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4229, "upload_time": "2018-06-07T17:55:41", "url": "https://files.pythonhosted.org/packages/56/7d/2491fca1127f6a042a2ba8da91f349f0d42cfc911ff9aab24c6b1c73593d/robotframework-dependencylibrary-1.0.0.post1.tar.gz" } ] }