[ 
https://issues.apache.org/jira/browse/QPIDIT-93?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16341138#comment-16341138
 ] 

Kim van der Riet commented on QPIDIT-93:
----------------------------------------

With the above commit, I have taken the following approach:

As all the test information and results are contained within the 
{{unittest.TestCase}} and {{unittest.TestResult}} objects, I created a new 
{{xunit_log}} module which takes these and generates an xUnit-formatted report 
using the standard Python {{xml.etree.cElementTree}} module to construct the 
XML.  To activate the xUnit logging, the {{--xunit-log}} parameter flag must be 
present when running the test(s).

The xUnit XML is based on this specification found at 
[GitHub|https://gist.github.com/erikd/4192748] (attached), a sample of the 
output is also attached.

The only information valid to a test report, but which does not appear in the 
xUnit XSD is a description of the broker (and optionally its config) and a full 
list of parameter options (for example {{--no-skip --broker-type None 
--xunit-log}}) used in the test. For example, the broker could be one of 
several and which would produce different results. Additionally, for some 
configurations (for example, using the [Qpid Dispatch 
Router|https://qpid.apache.org/components/dispatch-router/index.html]), the 
configuration of nodes and brokers (if any) is also relevant.  It feels to me 
as though there needs to be broker name, broker configuration and test 
parameters elements and/or attributes in the schema somewhere. This particular 
schema does not seem to be extensible. Am I missing something?

Ideas welcome.

> Optionally produce xUnit XML report with test results
> -----------------------------------------------------
>
>                 Key: QPIDIT-93
>                 URL: https://issues.apache.org/jira/browse/QPIDIT-93
>             Project: Apache QPID Interoperability Test Suite
>          Issue Type: Improvement
>    Affects Versions: 0.1.0
>            Reporter: Jiri Daněk
>            Assignee: Kim van der Riet
>            Priority: Minor
>         Attachments: amqp_types_test.2018-01-26T09-24-24.xml, xunit.xsd
>
>
> Something like the following should do the job. Instead of 
> https://pypi.python.org/pypi/unittest-xml-reporting, it might be possible to 
> maybe switch from unittest package to py.test, which has xUnit reports built 
> in.
> {noformat}
> diff --git a/src/python/qpid_interop_test/jms_messages_test.py 
> b/src/python/qpid_interop_test/jms_messages_test.py
> index 3b54510..3b94f3a 100755
> --- a/src/python/qpid_interop_test/jms_messages_test.py
> +++ b/src/python/qpid_interop_test/jms_messages_test.py
> @@ -24,19 +24,17 @@ Module to test JMS message types across different APIs
>  from json import dumps
>  from os import getenv, path
> +import xmlrunner
>  from proton import symbol
>  from qpid_interop_test.test_type_map import TestTypeMap
> @@ -302,7 +300,7 @@ class TestOptions(object):
>      Class controlling command-line arguments used to control the test.
>      """
>      def __init__(self, shim_map):
> -        parser = argparse.ArgumentParser(description='Qpid-interop AMQP 
> client interoparability test suite '
> +        parser = argparse.ArgumentParser(description='Qpid-interop AMQP 
> client interoperability test suite '
>                                           'for JMS message types')
>          parser.add_argument('--sender', action='store', 
> default='localhost:5672', metavar='IP-ADDR:PORT',
>                              help='Node to which test suite will send 
> messages.')
> @@ -313,6 +311,8 @@ class TestOptions(object):
>          parser.add_argument('--broker-type', action='store', 
> metavar='BROKER_NAME',
>                              help='Disable test of broker type (using 
> connection properties) by specifying the broker' +
>                              ' name, or "None".')
> +        parser.add_argument('--xunit-report-dir', action='store', 
> metavar='REPORTS_DIRECTORY',
> +                            help='Generate xUnit report into 
> REPORTS_DIRECTORY/TEST-<test_name>-<timestamp>.xml')
>          type_group = parser.add_mutually_exclusive_group()
>          type_group.add_argument('--include-type', action='append', 
> metavar='JMS_MESSAGE-TYPE',
>                                  help='Name of JMS message type to include. 
> Supported types:\n%s' %
> @@ -421,6 +421,7 @@ if __name__ == '__main__':
>              TEST_SUITE.addTest(unittest.makeSuite(test_case_class))
>  
>      # Finally, run all the dynamically created tests
> -    RES = unittest.TextTestRunner(verbosity=2).run(TEST_SUITE)
> +#    RES = unittest.TextTestRunner(verbosity=2).run(TEST_SUITE)  # type: 
> unittest.TextTestResult
> +    RES = xmlrunner.XMLTestRunner(verbosity=2).run(TEST_SUITE)  # type: 
> unittest.TextTestResult
>      if not RES.wasSuccessful():
>          sys.exit(1)
> {noformat}
> The main "problem" seems that each test has completely separate main method 
> and builds up options from scratch. Adding this to every test would mean some 
> unnecessary duplication. So maybe refactor this somewhat at first? On the 
> other hand, there are good reasons to keep the tests simple...
> What do you think?



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to