예제 #1
0
 def test_fill_testrun_present(self):
     fname = 'complete_notransform.xml'
     fname = os.path.join(conf.DATA_PATH, fname)
     xml_root = utils.get_xml_root(fname)
     utils.xunit_fill_testrun_id(xml_root, 'not_used')
     filled = utils.etree_to_string(xml_root)
     assert 'name="polarion-testrun-id" value="5_8_0_17"' in filled
예제 #2
0
def submit(xml_str=None, xml_file=None, xml_root=None, config=None, **kwargs):
    """Submits results to the Polarion Importer."""
    try:
        config = config or configuration.get_config()
        xml_root = _get_xml_root(xml_root, xml_str, xml_file)
        credentials = _get_credentials(config, **kwargs)
        submit_target = _get_submit_target(xml_root, config)
        utils.xunit_fill_testrun_id(xml_root, kwargs.get('testrun_id'))
        xml_input = utils.etree_to_string(xml_root)
    except Dump2PolarionException as err:
        logger.error(err)
        return

    logger.info("Submitting results to {}".format(submit_target))
    files = {'file': ('results.xml', xml_input)}
    try:
        response = requests.post(submit_target,
                                 files=files,
                                 auth=credentials,
                                 verify=False)
    # pylint: disable=broad-except
    except Exception as err:
        logger.error(err)
        response = None

    if response is None:
        logger.error("Failed to submit results to {}".format(submit_target))
    elif response:
        logger.info("Results received by the Importer (HTTP status {})".format(
            response.status_code))
    else:
        logger.error("HTTP status {}: failed to submit results to {}".format(
            response.status_code, submit_target))

    return response
예제 #3
0
def submit(xml_str=None,
           xml_file=None,
           xml_root=None,
           config=None,
           session=None,
           **kwargs):
    """Submits data to the Polarion Importer."""
    try:
        config = config or configuration.get_config()
        xml_root = _get_xml_root(xml_root, xml_str, xml_file)
        credentials = _get_credentials(config, **kwargs)
        submit_target = _get_submit_target(xml_root, config)
        utils.xunit_fill_testrun_id(xml_root, kwargs.get('testrun_id'))
        xml_input = utils.etree_to_string(xml_root)
        session = session or utils.get_session(credentials, config)
    except Dump2PolarionException as err:
        logger.error(err)
        return

    logger.info("Submitting data to {}".format(submit_target))
    files = {'file': ('results.xml', xml_input)}
    try:
        response = session.post(submit_target, files=files)
    # pylint: disable=broad-except
    except Exception as err:
        logger.error(err)
        response = None

    return validate_response(response, submit_target)
예제 #4
0
 def test_fill_testrun_missing(self):
     fname = 'properties.xml'
     xml_root = utils.get_xml_root(os.path.join(conf.DATA_PATH, fname))
     utils.xunit_fill_testrun_id(xml_root, '5_8_0_17')
     filled = utils.etree_to_string(xml_root)
     assert 'name="polarion-testrun-id" value="5_8_0_17"' in filled
예제 #5
0
 def test_fill_testrun_no_properties(self):
     xml_root = utils.get_xml_root_from_str('<testsuites/>')
     with pytest.raises(Dump2PolarionException) as excinfo:
         utils.xunit_fill_testrun_id(xml_root, '5_8_0_17')
     assert 'Failed to find <properties> in the XML file' in str(
         excinfo.value)
예제 #6
0
 def test_fill_testrun_invalid_xml(self):
     xml_root = utils.get_xml_root_from_str('<invalid/>')
     with pytest.raises(Dump2PolarionException) as excinfo:
         utils.xunit_fill_testrun_id(xml_root, '5_8_0_17')
     assert 'missing <testsuites>' in str(excinfo.value)