ExportResults.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import xlsxwriter
  2. import logging
  3. import json
  4. import baangt.base.GlobalConstants as GC
  5. from baangt.base.utils import utils
  6. logger = logging.getLogger("pyC")
  7. class ExportResults:
  8. def __init__(self, **kwargs):
  9. self.testRunInstance = kwargs.get(GC.KWARGS_TESTRUNINSTANCE)
  10. self.testRunName = self.testRunInstance.testRunName
  11. self.filename = self.__getOutputFileName()
  12. logger.info("Export-Sheet for results: " + self.filename)
  13. self.workbook = xlsxwriter.Workbook(self.filename)
  14. self.worksheet = self.workbook.add_worksheet("Output")
  15. self.dataRecords = kwargs.get(GC.KWARGS_TESTRUNINSTANCE).dataRecords
  16. self.fieldListExport = kwargs.get(GC.KWARGS_TESTRUNATTRIBUTES).get(GC.EXPORT_FORMAT)["Fieldlist"]
  17. self.__setHeader()
  18. self._exportData()
  19. self.closeExcel()
  20. def __getOutputFileName(self):
  21. l_file = self.testRunInstance.globalSettings[GC.DATABASE_EXPORTFILENAMEANDPATH] + \
  22. "baangt_" + self.testRunName + "_" + \
  23. utils.datetime_return() + \
  24. ".xlsx"
  25. logger.debug(f"Filename for export: {l_file}")
  26. return l_file
  27. def __setHeader(self):
  28. i = 0
  29. for column in self.fieldListExport:
  30. self.worksheet.write(0, i, column)
  31. i += 1
  32. self.worksheet.write(0, len(self.fieldListExport), "JSON")
  33. def _exportData(self):
  34. for key, value in self.dataRecords.items():
  35. for (n, column) in enumerate(self.fieldListExport):
  36. self.__writeCell(key+1, n, value, column)
  37. # Also write everything as JSON-String into the last column
  38. self.worksheet.write(key+1, len(self.fieldListExport), json.dumps(value))
  39. def __writeCell(self, line, cellNumber, testRecordDict, fieldName, strip=False):
  40. if fieldName in testRecordDict.keys() and testRecordDict[fieldName]:
  41. if '\n' in testRecordDict[fieldName][0:5] or strip:
  42. testRecordDict[fieldName] = testRecordDict[fieldName].strip()
  43. if isinstance(testRecordDict[fieldName], dict) or isinstance(testRecordDict[fieldName], list):
  44. self.worksheet.write(line, cellNumber, testRecordDict[fieldName].strip())
  45. else:
  46. self.worksheet.write(line, cellNumber, testRecordDict[fieldName])
  47. def closeExcel(self):
  48. self.workbook.close()