Skip to content

Instantly share code, notes, and snippets.

@ganeshmaharaj
Created January 14, 2016 00:10
Show Gist options
  • Save ganeshmaharaj/5e8da4d5044b54e13185 to your computer and use it in GitHub Desktop.
Save ganeshmaharaj/5e8da4d5044b54e13185 to your computer and use it in GitHub Desktop.
#! /usr/bin/python
import argparse
import os
import sys
import xml.etree.ElementTree as ET
import xlsxwriter
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--input", help="xml file you want to convert",
required=True)
parser.add_argument("-o", "--output", help="Output csv file",
required=True)
args = parser.parse_args()
if not os.path.isfile(args.input):
raise Exception('Input file %s not found' % args.input)
if os.path.isfile(args.output):
ans = raw_input('Do you want to overwrite this file? ')
if ans.lower() not in ('y' or 'yes'):
print "Please backup the file before it gets overwritten"
sys.exit
wbook = xlsxwriter.Workbook(args.output)
bold = wbook.add_format({'bold': True})
summary = wbook.add_worksheet('Summary')
logs = wbook.add_worksheet('Test Results')
detaillog = wbook.add_worksheet('Failed Test Logs')
nogood = ['failure', 'error', 'skipped']
orange_format = wbook.add_format()
orange_format.set_pattern(1)
orange_format.set_bg_color('orange')
red_format = wbook.add_format()
red_format.set_pattern(1)
red_format.set_bg_color('red')
green_format = wbook.add_format()
green_format.set_pattern(1)
green_format.set_bg_color('lime')
skip_format = wbook.add_format()
skip_format.set_pattern(1)
skip_format.set_bg_color('blue')
cellcolor = {'failure': orange_format,
'error': red_format,
'OK': green_format,
'skipped': skip_format,
}
tree = ET.parse(args.input)
row = 0
col = 0
summ = tree.getroot()
for ent in summ.keys():
summary.write(row, col, ent)
summary.write(row, col + 1, summ.get(ent))
row += 1
logs.write('A1', 'Swift3 Result', bold)
logs.write('B1', 'Test Name', bold)
logs.write('C1', 'Error Info', bold)
row = 1
col = 0
err_data = ""
for ent in tree.findall('testcase'):
result = 'OK'
error = ""
err_summary = ""
for child in ent.getchildren():
if child.tag in nogood:
result = child.tag
error = child.get('type')
err_data += "***************************************************\
***************************************************\n"
err_data += result.upper() + "::" + ent.get('classname') + \
':' + ent.get('name')
err_data += "\n----------------------------\n"
err_data += child.get('message') + '\n'
err_summary = child.get('message').split("\n")[0]
break
logs.write(row, col, result, cellcolor[result])
logs.write(row, col + 1, '%s:%s' % (ent.get('classname'),
ent.get('name')))
if error or err_summary:
logs.write(row, col + 2, '%s :: %s' % (error, err_summary))
row += 1
row = 0
col = 0
for line in err_data.split("\n"):
detaillog.write(row, col, line)
row += 1
wbook.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment