{ "info": { "author": "Robot Framework Developers", "author_email": "robotframework@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Robot Framework", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Software Development :: Testing" ], "description": "StatusChecker\n=============\n\n.. contents::\n :local:\n\nIntroduction\n------------\n\nStatusChecker is a tool for validating that executed `Robot Framework`_\ntest cases have expected statuses and log messages. It is mainly useful\nfor Robot Framework test library developers who want to use Robot\nFramework to also test their libraries. StatusChecker 1.3 and newer are\ncompatible both with Python 2 and Python 3.\n\nStatusChecker project is hosted at GitHub_ and downloads are at\nPyPI_.\n\n.. _Robot Framework: http://robotframework.org\n.. _GitHub: https://github.com/robotframework/statuschecker\n.. _PyPI: https://pypi.python.org/pypi/robotstatuschecker\n.. _pip: http://pip-installer.org\n\nInstallation instructions\n-------------------------\n\nThe easiest way to install StatusChecker is by using pip_::\n\n pip install robotstatuschecker\n\nAlternatively you can get the code by cloning the project from\nGitHub_ or downloading the source distribution from PyPI_ and\nextracting it. After that you can install the tool with::\n\n python setup.py install\n\nUsage\n-----\n\nFrom the command line::\n\n python -m robotstatuschecker infile [outfile]\n\nProgrammatically:\n\n.. sourcecode:: python\n\n from robotstatuschecker import process_output\n\n process_output('infile.xml', 'outfile.xml')\n\nIf an output file is not given, the input file is edited in place.\n\nDefining expected test status\n-----------------------------\n\nBy default, all test cases are expected to *PASS* and have no\nmessage. Changing the expected status to *FAIL* is done by having\nthe word ``FAIL`` (in uppercase) somewhere in the test case\ndocumentation. The expected error message must then follow\nthe ``FAIL`` marker.\n\nIf a test is expected to *PASS* with a certain message, the word\n``PASS`` must be added to its documentation explicitly and the\nexpected message given after that.\n\nThe expected message can also be specified as a regular expression by\nprefixing it with ``REGEXP:``. The specified regular expression\nmust match the error message fully. Having spaces between the status,\nthe message and the possible regular expression prefix is optional.\n\nAn alternative to using regular expressions is using glob patterns where\n``*`` matches anything (including newline) and ``?`` matches any single\ncharacter. This is can be accomplished by starting the expected message\nwith ``GLOB:``.\n\nFinally, it is possible to test that the message starts with something\nby prefixing the expected message with ``STARTS:``.\n\nThe following examples illustrate different ways to define test\nstatuses and messages:\n\n.. sourcecode:: robotframework\n\n *** Test Cases ***\n Simple failure\n [Documentation] FAIL Expected error message\n Steps\n\n Exclude documentation before marker\n [Documentation] This text is ignored FAIL Expected error message\n Steps\n\n Regexp example\n [Documentation] FAIL REGEXP: (IOError|OSError): .*\n Steps\n\n Glob example\n [Documentation] FAIL GLOB: ??Error: *\n Steps\n\n Start example\n [Documentation] FAIL STARTS: IOError:\n Steps\n\n Passing without message\n Steps\n\n Passing with message\n [Documentation] PASS Expected message\n Steps\n\nDefining expected log messages\n------------------------------\n\nThe expected keyword log messages can also be defined in the test case\ndocumentation using a syntax such as::\n\n LOG x.y:z LEVEL Actual message\n\nThe part before the colon specifies the keyword to check. For\nexample, ``1`` means first keyword, ``1.2`` is the second child\nkeyword of the first keyword, and so on.\n\nThe part after the colon species the message. For example, ``1:2``\nmeans the second message of the first keyword and ``1.2:3`` is\nthe third message of the second child keyword of the first keyword.\nThe message index is optional and defaults to ``1``.\n\nMessage level is specified before the actual message, and it can be\nany of the valid log levels in capital letters. If the level is not\ngiven it defaults to ``INFO``. Starting from 1.4 release also\n``ERROR`` level is supported.\n\nPossible leading and trailing whitespace is ignored both in the expected\nand in the actual log message.\n\nThis syntax can be used multiple times to test multiple messages. It\nalso works together with specifying the expected error message with\n``FAIL``, but it that case ``FAIL`` and the expected error must\nbe first.\n\nIt is also possible to give the message as a regular expression or glob\npattern or to give just the start of the message. This is accomplished\nby prefixing the message with ``REGEXP:``, ``GLOB:`` or ``STARTS:``,\nrespectively, exactly like when `defining expected test status`_.\n\nFinally, to check that a keyword does not have a certain message, it\nis possible to use ``NONE`` in the place of the message.\n\n.. sourcecode:: robotframework\n\n *** Test cases ***\n Simple example\n [Documentation] LOG 1 Hello, world!\n Steps\n\n Nested keywords\n [Documentation] LOG 2.1 1st child of 2nd kw\n Steps\n\n Message index\n [Documentation] LOG 2:2 2nd msg of 2nd kw\n Steps\n\n Nested and index\n [Documentation] LOG 3.1:2 2nd msg of 3rd kw's 1st child\n Steps\n\n Log levels\n [Documentation] LOG 2 DEBUG Debug-level message\n ... LOG 1.2:3 WARN Warning\n Steps\n\n Multiple messages\n [Documentation] LOG 1 First tested message\n ... LOG 1.2 Second tested message\n ... LOG 2.2.1 DEBUG Third tested message\n Steps\n\n Status and log\n [Documentation] FAIL Expected error message\n ... LOG 1.2 Expected log message\n Steps\n\n Regexp message\n [Documentation] LOG 1 REGEXP: (Hello|Hi) world!\n Steps\n\n Glob message\n [Documentation] LOG 1 GLOB: * world!\n Steps\n\n Start of the message\n [Documentation] LOG 1 STARTS: Hello w\n Steps\n\n No message\n [Documentation] LOG 1:1 Test that we have only 1 msg\n ... LOG 1:2 NONE\n Steps\n", "description_content_type": "", "docs_url": null, "download_url": "https://pypi.python.org/pypi/robotstatuschecker", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/robotframework/statuschecker", "keywords": "robotframework testing testautomation atdd", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "robotstatuschecker", "package_url": "https://pypi.org/project/robotstatuschecker/", "platform": "any", "project_url": "https://pypi.org/project/robotstatuschecker/", "project_urls": { "Download": "https://pypi.python.org/pypi/robotstatuschecker", "Homepage": "https://github.com/robotframework/statuschecker" }, "release_url": "https://pypi.org/project/robotstatuschecker/1.4/", "requires_dist": null, "requires_python": "", "summary": "A tool for checking that Robot Framework test cases have expected statuses and log messages.", "version": "1.4" }, "last_serial": 5229096, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "571801454668e57806aa25b9b0245b84", "sha256": "011ea87d541bfc60bc9a640b562b2830ad4767c8d8dc1008bd3f0043425f00c8" }, "downloads": -1, "filename": "robotstatuschecker-1.0.tar.gz", "has_sig": false, "md5_digest": "571801454668e57806aa25b9b0245b84", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5189, "upload_time": "2013-12-17T14:06:58", "url": "https://files.pythonhosted.org/packages/6a/27/b47b1dd67b55c9e18ad9935489a2da4dae7cfdd1bb2df6ca566c3f7060bd/robotstatuschecker-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "214ca520cc469d18478631ec6bf8c1a1", "sha256": "16f67e5bd43f6fd82c482e67ba335d2ebc1c0036bad25548153ed27de500f65d" }, "downloads": -1, "filename": "robotstatuschecker-1.1.tar.gz", "has_sig": false, "md5_digest": "214ca520cc469d18478631ec6bf8c1a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5781, "upload_time": "2013-12-23T11:27:41", "url": "https://files.pythonhosted.org/packages/7e/09/e7b5b885c99295903d94bd3a53e3f5fd7853f55a2e4c5ddc641b9f13788d/robotstatuschecker-1.1.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "4ddc8f2e331762db7b7a511b1c80b0fc", "sha256": "c14b65ddb9218336c4f1ab1ab8e6591074f6ce8b69c28a9c5aaa8ef3935b29e8" }, "downloads": -1, "filename": "robotstatuschecker-1.1.1.tar.gz", "has_sig": false, "md5_digest": "4ddc8f2e331762db7b7a511b1c80b0fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5835, "upload_time": "2013-12-28T12:07:14", "url": "https://files.pythonhosted.org/packages/ef/06/db85ac13e1ceefbf99fb41aff4a6b71d0da5e4fa5e56d6644876d2e19a3e/robotstatuschecker-1.1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "07472e8a0776ced002ce0d8557157b85", "sha256": "f07c67cd72a086b37c0a413bc97d34dea3f6ae7cc96ae6b4b3e4390f06b93d3f" }, "downloads": -1, "filename": "robotstatuschecker-1.2.tar.gz", "has_sig": false, "md5_digest": "07472e8a0776ced002ce0d8557157b85", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6147, "upload_time": "2014-08-25T20:45:21", "url": "https://files.pythonhosted.org/packages/3b/4b/e28d1f388ab7b512755bb0185b302d1112f81d2ef3cf0aafc84c49022811/robotstatuschecker-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "11078875f4c6579a84bcd860a9845e00", "sha256": "f762e6c7097a61518bfd94afab9896304825443e779cd9a8f150d36d65bb1726" }, "downloads": -1, "filename": "robotstatuschecker-1.3.tar.gz", "has_sig": false, "md5_digest": "11078875f4c6579a84bcd860a9845e00", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6576, "upload_time": "2016-04-22T15:44:35", "url": "https://files.pythonhosted.org/packages/8c/f3/d1e137930de2d8fe1ce4fae7be92e8104d8948699cd674f4e4a4d8d3d167/robotstatuschecker-1.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "de435fdb46192402f4e73c110062ec6c", "sha256": "c606eebdf2f28063dcb483e43fd6bc511e84e99a9f7d004163a180be558e58f6" }, "downloads": -1, "filename": "robotstatuschecker-1.4.tar.gz", "has_sig": false, "md5_digest": "de435fdb46192402f4e73c110062ec6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6531, "upload_time": "2019-05-05T17:49:19", "url": "https://files.pythonhosted.org/packages/3a/ce/4023960ae872ea91b6b4be254f02a74898d0d2b72c25f0eddaae33b5fb85/robotstatuschecker-1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "de435fdb46192402f4e73c110062ec6c", "sha256": "c606eebdf2f28063dcb483e43fd6bc511e84e99a9f7d004163a180be558e58f6" }, "downloads": -1, "filename": "robotstatuschecker-1.4.tar.gz", "has_sig": false, "md5_digest": "de435fdb46192402f4e73c110062ec6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6531, "upload_time": "2019-05-05T17:49:19", "url": "https://files.pythonhosted.org/packages/3a/ce/4023960ae872ea91b6b4be254f02a74898d0d2b72c25f0eddaae33b5fb85/robotstatuschecker-1.4.tar.gz" } ] }