Created
January 14, 2016 00:10
-
-
Save ganeshmaharaj/5e8da4d5044b54e13185 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /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