in modules/python/clusterloader2/utils.py [0:0]
def parse_xml_to_json(file_path, indent = 0):
with open(file_path, 'r', encoding='utf-8') as file:
xml_content = file.read()
dom = minidom.parseString(xml_content)
result = {
"testsuites": []
}
# Extract test suites
testsuites = dom.getElementsByTagName("testsuite")
for testsuite in testsuites:
suite_name = testsuite.getAttribute("name")
suite_tests = int(testsuite.getAttribute("tests"))
suite_failures = int(testsuite.getAttribute("failures"))
suite_errors = int(testsuite.getAttribute("errors"))
suite_result = {
"name": suite_name,
"tests": suite_tests,
"failures": suite_failures,
"errors": suite_errors,
"testcases": []
}
# Extract test cases
testcases = testsuite.getElementsByTagName("testcase")
for testcase in testcases:
case_name = testcase.getAttribute("name")
case_classname = testcase.getAttribute("classname")
case_time = testcase.getAttribute("time")
case_result = {
"name": case_name,
"classname": case_classname,
"time": case_time,
"failure": None
}
# Check for failure
failure = testcase.getElementsByTagName("failure")
if failure:
failure_message = failure[0].firstChild.nodeValue
case_result["failure"] = failure_message
suite_result["testcases"].append(case_result)
result["testsuites"].append(suite_result)
# Convert the result dictionary to JSON
json_result = json.dumps(result, indent = indent)
return json_result