Skip to main content

Python script for converting xUnit/JUnit XML format to reStructuredText (.rst) with traceable items

Project description

Apache 2.0 License PyPI packaged release Build status Documentation Code Coverage Contributions welcome

Documentation xunit2rst

This script can convert a JUnit/xUnit (.xml) file to a reStructuredText (.rst) file with traceable items.

Goal

This script allows you to connect your test reports to your test cases via the mlx.traceability Sphinx extension.

Installation

pip3 install mlx.xunit2rst

Usage

mlx.xunit2rst -i itest_report.xml -o my_lib_report.rst --prefix ITEST_MY_LIB-

mlx.xunit2rst --help

usage: xunit2rst [-h] -i INPUT_FILE -o RST_OUTPUT_FILE [--only EXPRESSION] [-s] [-p PREFIX]
                 [--trim-suffix] [--unit-or-integration UNIT_OR_INTEGRATION] [-t TYPE] [-f]
                 [-l LOG] [--links] [-v]


optional arguments:
  -h, --help            show this help message and exit
  -i INPUT_FILE, --input INPUT_FILE
                        The input XML file
  -o RST_OUTPUT_FILE, --output RST_OUTPUT_FILE
                        The output RST file
  --only EXPRESSION     Expression of tags for Sphinx' `only` directive that surrounds all
                        RST content. By default, no `only` directive is generated.
  -s, --itemize-suites  Flag to itemize testsuite elements instead of testcase
                        elements.
  -p PREFIX, --prefix PREFIX
                        Optional prefix to add to item IDs
  --trim-suffix         If the suffix of the --prefix argument ends with '_-' it gets
                        trimmed to '-'
  --unit-or-integration UNIT_OR_INTEGRATION
                        Deprecated alternative to --type; to be removed in version
                        2.0.0.
  -t TYPE, --type TYPE  Optional: give value starting with 'u', 'i' or 'q' to
                        explicitly define the type of test:
                        unit/integration/qualification test
  -f, --failure-message
                        Include the error message in case of test failure in the item's
                        body.
  -l LOG, --log LOG     Optional: path to the HTML log file, relative to where Sphinx
                        will put the --output, to create a link to.
  --links               Optional: inserts a link to the RobotFramework HTML log file
                        for each test case as ext_robotframeworklog link id.
  -v, --version         show program's version number and exit

If you use the --only input argument, you should also add 'sphinx_selective_exclude.eager_only' to the extensions list to prevent mlx.traceability from parsing the content and ignoring the effect of the only directive.

Behavior

Itemization

By default, all testcase elements from the input file are used to created treaceability items. This may not always be desired. The -s, --itemize-suites flag lets the script itemize testsuite elements instead. In this case, the testcase elements will still be parsed to determine whether the testsuite passed or failed or skipped.

Test Result of Itemized Suites
Pass (passes)

No test cases have failed. Some might be skipped.

Fail (fails)

At least one test case has failed.

Skip (skipped)

All test cases have been skipped.

Item IDs

The name attribute of the element to be itemized is used to build the item ID. Lower case letters get converted to upper case, whitespaces get converted to underscores, and & characters get converted to AND. A valid prefix must end with a hyphen to be recognized by the script. If there is an additional string prepended to this name by means of a dot, this string won’t be taken into account. Example below:

MY_LIB.ITEST_MY_LIB-my function & keyword XML element name results in item ID ITEST_MY_LIB-MY_FUNCTION_AND_KEYWORD

Prefix

Traceability item IDs have a prefix that is unique for the group they belong to, e.g. ITEST_MY_LIB-. The --prefix input argument lets you configure this prefix. It will be prepended to the item names found in the input file to build the item ID. By default, the script adds ITEST- or UTEST- for integration or unit test reports, unless the prefixes already exist in the input file.

Distinction Between Unit and Integration Test Reports

Test reports that have a testsuites element as root in XML are treated as unit test reports. Otherwise the script treats the input file as an integration test report. This discerning behavior gets overridden when prefixes are found in the input file or the --prefix input argument is used. The script looks for a U or I as the first letter of the prefix. Lastly, you can explicitly define the type by using the --type input argument. Its value should start with u or i and gets parsed case-insensitively.

Include Message of Failure(s)

When the -f, --failure-message flag is set, the tool includes the messages of all failures and reasons for skipping of the item’s test cases in its body.

Add Content to Test Reports

Extra reStructuredText content for the generated test reports can be defined in a YAML file that contains a mapping, aka dictionary, of case insensitive test case names (or test suite names for -s, --itemize-suites) as keys and reStructuredText strings as values. Multiline strings are supported. This feature is used in the example documentation.

The path to the YAML file, an absolute path or relative to the input XML file, must be added as a metadata element to the XML content, with the string xunit2rst content file as name and the path as value.

Examples of valid metadata in XML:

<properties>
  <property name="xunit2rst content file" value="../extra_content.yml"/>
</properties>

<traits>
  <trait name="xUnit2rst Content File" value="/home/user/git/test_project/extra_content.yml"/>
</traits>

When using Robot Framework v5 or greater, this path can be provided as Free test suite metadata.

Color Test Results

You can highlight each test result (pass, fail and skip) in a different color so that they stand out more from the rest of the report. The element with the test result text contains two classes: xunit2rst and the test result itself. For HTML documentation, you can use the CSS stylesheet, provided with the Python package, by passing it to Sphinx with add_css_file, or by adding its contents manually to your own stylesheet.

This feature is demonstrated in the test reports of the example documentation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mlx.xunit2rst-2.0.0.tar.gz (35.3 kB view details)

Uploaded Source

Built Distribution

mlx.xunit2rst-2.0.0-py2.py3-none-any.whl (22.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file mlx.xunit2rst-2.0.0.tar.gz.

File metadata

  • Download URL: mlx.xunit2rst-2.0.0.tar.gz
  • Upload date:
  • Size: 35.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for mlx.xunit2rst-2.0.0.tar.gz
Algorithm Hash digest
SHA256 4b65673832189c42ea05d96ca04207968f7c77706477779598ce326c8baed450
MD5 908845d6bac43d5e84c52ac7462841de
BLAKE2b-256 1af51e1e8a02483d2dd59f2e7feb204dff4dc6cd7cff12a76385927bc5bda9e0

See more details on using hashes here.

File details

Details for the file mlx.xunit2rst-2.0.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for mlx.xunit2rst-2.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 80afd000befe7af5969804ce8699d7c547b43b4b76b60cae0a38d77d6514df2a
MD5 157f3f95027a47a172fd7d45ca86a6c3
BLAKE2b-256 c959ef690eec0315e0d04de994e53df2ef7f200706759fa56200dbcdfadfa6a4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page