{"id":26482005,"url":"https://github.com/kiwitcms/robotframework-plugin","last_synced_at":"2025-03-20T03:36:38.083Z","repository":{"id":37952833,"uuid":"251322451","full_name":"kiwitcms/robotframework-plugin","owner":"kiwitcms","description":"Robot Framework plugin for Kiwi TCMS","archived":false,"fork":false,"pushed_at":"2024-10-19T13:39:14.000Z","size":94,"stargazers_count":12,"open_issues_count":1,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-10-30T05:42:04.353Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://kiwitcms.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kiwitcms.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"custom":["https://kiwitcms.org/#subscriptions"],"github":["kiwitcms"],"patreon":null,"open_collective":"kiwitcms","ko_fi":null,"tidelift":"pypi/kiwitcms","community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null}},"created_at":"2020-03-30T14:00:55.000Z","updated_at":"2024-10-08T09:13:08.000Z","dependencies_parsed_at":"2023-12-22T19:34:13.653Z","dependency_job_id":"5391dd36-e15b-4ed3-8ce5-a8f9a65f306e","html_url":"https://github.com/kiwitcms/robotframework-plugin","commit_stats":{"total_commits":93,"total_committers":9,"mean_commits":"10.333333333333334","dds":0.5806451612903225,"last_synced_commit":"cf2f3d2f9251325b288c9adb1b2d8fcd54733a50"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiwitcms%2Frobotframework-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiwitcms%2Frobotframework-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiwitcms%2Frobotframework-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiwitcms%2Frobotframework-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kiwitcms","download_url":"https://codeload.github.com/kiwitcms/robotframework-plugin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244545525,"owners_count":20469879,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-20T03:36:37.493Z","updated_at":"2025-03-20T03:36:38.073Z","avatar_url":"https://github.com/kiwitcms.png","language":"Python","funding_links":["https://kiwitcms.org/#subscriptions","https://github.com/sponsors/kiwitcms","https://opencollective.com/kiwitcms","https://tidelift.com/funding/github/pypi/kiwitcms","https://tidelift.com/badges/package/pypi/kiwitcms-robotframework-plugin","https://tidelift.com/subscription/pkg/pypi-kiwitcms-robotframework-plugin?utm_source=pypi-kiwitcms-robotframework-plugin\u0026utm_medium=github\u0026utm_campaign=readme"],"categories":[],"sub_categories":[],"readme":"Robot Framework plugin for Kiwi TCMS\n====================================\n\n.. image:: https://img.shields.io/pypi/v/kiwitcms-robotframework-plugin.svg\n    :target: https://pypi.org/project/kiwitcms-robotframework-plugin\n    :alt: PyPI version\n\n.. image:: https://pyup.io/repos/github/kiwitcms/robotframework-plugin/shield.svg\n    :target: https://pyup.io/repos/github/kiwitcms/robotframework-plugin/\n    :alt: Python updates\n\n.. image:: https://img.shields.io/badge/kiwi%20tcms-results-9ab451.svg\n    :target: https://tcms.kiwitcms.org/plan/290/\n    :alt: TP for kiwitcms/robotframework-plugin (master)\n\n.. image:: https://tidelift.com/badges/package/pypi/kiwitcms-robotframework-plugin\n    :target: https://tidelift.com/subscription/pkg/pypi-kiwitcms-robotframework-plugin?utm_source=pypi-kiwitcms-robotframework-plugin\u0026utm_medium=github\u0026utm_campaign=readme\n    :alt: Tidelift\n\n.. image:: https://img.shields.io/twitter/follow/KiwiTCMS.svg\n    :target: https://twitter.com/KiwiTCMS\n    :alt: Kiwi TCMS on Twitter\n\nThis package allows you execute your *Robot Framework* test suite and report the\nresults into `Kiwi TCMS \u003chttp://kiwitcms.org\u003e`_.\n\nInstallation\n------------\n\n::\n\n    pip install kiwitcms-robotframework-plugin\n\n\nConfiguration and environment\n-----------------------------\n\nMinimal config file `~/.tcms.conf`::\n\n    [tcms]\n    url = https://tcms.server/xml-rpc/\n    username = your-username\n    password = your-password\n\n\nFor more info see `tcms-api docs \u003chttps://tcms-api.readthedocs.io\u003e`_.\n\nEach RF suite may define the following variables:\n\n- **${plan_id}**: Existing TestPlan ID for storing test execution results.\n  **WARNING:** this plugin will create a new TestRun whenever ``plan_id``\n  changes! If subsequent test scenarios, aka .robot files don't override\n  ``plan_id`` the current one will be used!\n- **${product}**: Existing product name when creating a new TestPlan\n- **${build_user_email}**: Email for an existing user,\n  override with ``TCMS_DEFAULT_TESTER_ID``!\n\n.. warning::\n\n    If any of the above variables are missing this plugin will attempt to\n    discover the necessary information from your environment. The exect\n    behavior is document at\n    https://kiwitcms.readthedocs.io/en/latest/plugins/automation-frameworks.html#plugin-configuration\n\nDocumentation from test suite(s) is used when creating new TestRun(s).\n\nEach RF test case may also specify the ``TC-xyz`` tag to map to an existing\nTestCase in the database. For example::\n\n    *** Settings ***\n    Documentation   An example test suite\n    Library         OperatingSystem\n\n    *** Variables ***\n    ${plan_id}      234\n\n    *** Test Cases ***\n    Scenario Maps To Existing TestCase\n        [Tags]    TC-607  arbitrary_tag_here\n        Should Be Equal    \"Hello\"    \"Hello\"\n\n    Hello World Scenario\n        [Documentation]    This will be the text of the new TC created in DB\n        Should Be Equal    \"Hello\"    \"Hello\"\n\nDocumentation from test cases is used when creating new TestCase records in\nthe database.\n\n\nUsage\n-----\n\n::\n\n    robot --listener zealand.listener.KiwiTCMS\n\n\nExtension and customization\n---------------------------\n\nYou can customize the behavior of this plugin by extending the listener and\nbackend classes and overriding some of their methods. For example\nsave the following in ``acme_tools.py``::\n\n    from zealand.listener import KiwiTCMS\n    from zealand.listener import RFBackend\n\n\n    class JenkinsBackend(RFBackend):\n        def get_run_id(self):\n            \"\"\"\n                If ${node_name} is specified then tag the TR with \"node: X\" tag!\n\n                This is done right after a new TR is created!\n            \"\"\"\n            run_id = super().get_run_id()\n\n            node_name = self.built_in.get_variable_value('${node_name}')\n            if node_name:\n                self.rpc.TestRun.add_tag(run_id, 'node: %s' % node_name)\n            return run_id\n\n        def finish_test_run(self):\n            \"\"\"\n                Do not set TR.stop_date !!!\n\n                If ${jenkins_tag} is specified then tag the TR with it!\n\n                This is executed at the end of each TestRun after all\n                execution results have been reported.\n            \"\"\"\n            # do not call the inherited method b/c we want to keep these\n            # test runs open for inspection by a human !!!\n            # super().finish_test_run()\n\n            jenkins_tag = self.built_in.get_variable_value('${jenkins_tag}')\n            if jenkins_tag:\n                self.rpc.TestRun.add_tag(self.run_id, jenkins_tag)\n\n    class AcmeCorpListener(KiwiTCMS):\n        backend_class = JenkinsBackend\n\n        def end_test(self, name, attrs):\n            \"\"\"\n                You may also find it more appropriate to override a\n                listener class instead.\n            \"\"\"\n            super().end_test(name, attrs)\n\n            for tag in attrs['tags']:\n                if tag.startswith('JIRA-'):\n                    # hyperlink the results between Kiwi TCMS, Jenkins \u0026 JIRA\n                    # by posting comments everywhere\n\nthen instruct Robot Framework to use the overriden listener instead of the\ndefault one::\n\n    robot --listener path/to/acme_tools.py\n\n\nChangelog\n---------\n\nv12.7 (10 Dec 2023)\n~~~~~~~~~~~~~~~~~~~\n\n- Update robotframework from 5.0 to 6.1.1\n- Update tcms-api from 11.2 to 12.7\n- Relax ``tcms-api`` dependency to be ``\u003e=``. Closes\n  `Issue #63 \u003chttps://github.com/kiwitcms/robotframework-plugin/issues/63\u003e`_\n- Build and test with Python 3.11\n\n\nv11.2 (15 May 2022)\n~~~~~~~~~~~~~~~~~~~\n\n- Update robotframework from 4.1.2 to 5.0\n- Update tcms-api from 11.0 to 11.2\n- Ignore 403 errors when searching for user by email\n- Created records are annotated with plugin name and version\n\n\nv11.0 (06 Dec 2021)\n~~~~~~~~~~~~~~~~~~~\n\n- Forward compatible with upcoming Kiwi TCMS v11.0\n- Update robotframework from 3.2.2 to 4.1.2\n- Update tcms-api from 10.0 to 11.0\n- Pylint fixes\n\n\nv10.0 (02 Mar 2021)\n~~~~~~~~~~~~~~~~~~~\n\n- Compatible with Kiwi TCMS v10.0\n- Update tcms-api to 10.0\n\n\nv9.0 (13 Jan 2020)\n~~~~~~~~~~~~~~~~~~\n\n- Compatible with Kiwi TCMS v9.0\n- Update tcms-api to 9.0\n\n\nv1.1.0 (28 Oct 2020)\n~~~~~~~~~~~~~~~~~~~~\n\n- Update tcms-api to 8.6.0\n- Update robotframework to 3.2.2\n\n\nv1.0.0 (04 May 2020)\n~~~~~~~~~~~~~~~~~~~~\n\n- Initial release\n- Original implementation by Aniello Barletta\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkiwitcms%2Frobotframework-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkiwitcms%2Frobotframework-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkiwitcms%2Frobotframework-plugin/lists"}