validate:tools: Print some statistic at the end of the test run

This commit is contained in:
Thibault Saunier 2014-01-09 11:14:19 +01:00
parent d8fc68479c
commit c33d10470f
2 changed files with 31 additions and 6 deletions

View file

@ -24,7 +24,7 @@ import re
import codecs import codecs
from loggable import Loggable from loggable import Loggable
from xml.sax import saxutils from xml.sax import saxutils
from utils import mkdir, Result, printc from utils import mkdir, Result, printc, Colors
UNICODE_STRINGS = (type(unicode()) == type(str())) UNICODE_STRINGS = (type(unicode()) == type(str()))
@ -57,7 +57,7 @@ class Reporter(Loggable):
self.options = options self.options = options
self.stats = {'timeout': 0, self.stats = {'timeout': 0,
'failures': 0, 'failures': 0,
'passes': 0, 'passed': 0,
'skipped': 0 'skipped': 0
} }
self.results = [] self.results = []
@ -71,7 +71,7 @@ class Reporter(Loggable):
self._current_test = test self._current_test = test
def set_failed(self, test): def set_failed(self, test):
self.stats["failed"] += 1 self.stats["failure"] += 1
def set_passed(self, test): def set_passed(self, test):
self.stats["passed"] += 1 self.stats["passed"] += 1
@ -94,9 +94,27 @@ class Reporter(Loggable):
self._current_test = None self._current_test = None
def final_report(self): def final_report(self):
print "\n"
printc("Final Report:", title=True)
for test in self.results: for test in self.results:
printc(test) printc(test)
print "\n"
lenstat = (len("Statistics") + 1)
printc("Statistics:\n%s" %(lenstat * "-"), Colors.OKBLUE)
printc("%sPassed: %d" % (lenstat * " ", self.stats["passed"]), Colors.OKGREEN)
printc("%sFailed: %d" % (lenstat * " ", self.stats["failures"]), Colors.FAIL)
printc("%s%s" %(lenstat * " ", (len("Failed: 0")) * "-"), Colors.OKBLUE)
total = self.stats["failures"] + self.stats["passed"]
color = Colors.WARNING
if total == self.stats["passed"]:
color = Colors.OKGREEN
elif total == self.stats["failures"]:
color = Colors.FAIL
printc("%sTotal: %d" % (lenstat * " ", total), color)
class XunitReporter(Reporter): class XunitReporter(Reporter):
"""This reporter provides test results in the standard XUnit XML format.""" """This reporter provides test results in the standard XUnit XML format."""
@ -139,7 +157,7 @@ class XunitReporter(Reporter):
self.encoding, 'replace') self.encoding, 'replace')
self.stats['encoding'] = self.encoding self.stats['encoding'] = self.encoding
self.stats['total'] = (self.stats['timeout'] + self.stats['failures'] self.stats['total'] = (self.stats['timeout'] + self.stats['failures']
+ self.stats['passes'] + self.stats['skipped']) + self.stats['passed'] + self.stats['skipped'])
self.xml_file.write( u'<?xml version="1.0" encoding="%(encoding)s"?>' self.xml_file.write( u'<?xml version="1.0" encoding="%(encoding)s"?>'
u'<testsuite name="gesprojectslauncher" tests="%(total)d" ' u'<testsuite name="gesprojectslauncher" tests="%(total)d" '
u'errors="%(timeout)d" failures="%(failures)d" ' u'errors="%(timeout)d" failures="%(failures)d" '
@ -168,7 +186,7 @@ class XunitReporter(Reporter):
def set_passed(self, test): def set_passed(self, test):
"""Add success output to Xunit report. """Add success output to Xunit report.
""" """
self.stats['passes'] += 1 self.stats['passed'] += 1
self.errorlist.append( self.errorlist.append(
'<testcase classname=%(cls)s name=%(name)s ' '<testcase classname=%(cls)s name=%(name)s '
'time="%(taken).3f">%(systemout)s</testcase>' % 'time="%(taken).3f">%(systemout)s</testcase>' %

View file

@ -63,7 +63,14 @@ def mkdir(directory):
def printc (message, color="", title=False): def printc (message, color="", title=False):
if title: if title:
message = len(message) * '=' + message + len(message) * '=' length = 0
for l in message.split("\n"):
if len(l) > length:
length = len(l)
if length == 0:
length = len(message)
message = length * '=' + "\n" + str(message) + "\n" + length * '='
if hasattr(message, "result") and color == '': if hasattr(message, "result") and color == '':
if message.result == Result.FAILED: if message.result == Result.FAILED:
color = Colors.FAIL color = Colors.FAIL