testresult.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #! python
  2. import shutil
  3. from StringIO import StringIO
  4. from xml.etree import ElementTree
  5. class TestResult:
  6. def _extractXml(self, log, xml):
  7. dump = False
  8. log.seek(0)
  9. for line in log:
  10. if dump:
  11. xml.write(line)
  12. if line.strip() == '</report>':
  13. dump = False
  14. else:
  15. if line.strip() == '<?xml version="1.0"?>':
  16. dump = True
  17. xml.write(line)
  18. def __init__(self, log):
  19. self._xml = StringIO()
  20. self._extractXml(log, self._xml)
  21. self._xml.seek(0)
  22. try:
  23. report = ElementTree.parse(self._xml).getroot()
  24. summary = report[0].findall('summary')[0]
  25. self._tests = summary.find('tcnt').text
  26. self._executed = summary.find('exec').text
  27. self._passed = summary.find('pass').text
  28. self._failed = summary.find('fail').text
  29. self._avail = True
  30. except ElementTree.ParseError as e:
  31. self._avail = False
  32. self._except = e
  33. def saveXml(self, filename):
  34. with open(filename, "w") as file:
  35. self._xml.seek(0)
  36. shutil.copyfileobj(self._xml, file)
  37. def isAvailable(self):
  38. return self._avail
  39. def getSummary(self):
  40. if self._avail:
  41. return self._tests, self._executed, self._passed, self._failed
  42. else:
  43. raise self._except