TestCaseSequenceParallel.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import logging
  2. from baangt.TestSteps import Exceptions
  3. from baangt.base import GlobalConstants as GC
  4. from baangt.base.Utils import utils
  5. from datetime import datetime
  6. import time
  7. import gevent.queue
  8. logger = logging.getLogger("pyC")
  9. class TestCaseSequenceParallel:
  10. def __init__(self, sequenceNumber: int, tcNumber: int, testcaseSequence=None, **kwargs):
  11. self.sequenceNumber = sequenceNumber
  12. self.dataRecord = kwargs.get(GC.KWARGS_DATA)
  13. self.tcNumber = tcNumber
  14. self.testcaseSequence = testcaseSequence
  15. self.kwargs = kwargs
  16. # Add the sequence-Number of parallel runs, so that the Testcase will know, which sequence he is in.
  17. self.kwargs[GC.KWARGS_SEQUENCENUMBER] = sequenceNumber
  18. def one_sequence(self, results: gevent.queue.Queue):
  19. dataRecord = self.dataRecord
  20. currentRecordNumber = self.tcNumber
  21. testcaseSequence = self.testcaseSequence
  22. parallelizationSequenceNumber = self.sequenceNumber
  23. logger.info(f"Starting one_sequence with SequenceNumber = {parallelizationSequenceNumber}, "
  24. f"CurrentRecordNumber is {currentRecordNumber}")
  25. if not dataRecord:
  26. logger.warning("dataRecord was empty - doing nothing")
  27. return
  28. try:
  29. self.kwargs[GC.KWARGS_TESTRUNINSTANCE].executeDictSequenceOfClasses(testcaseSequence,
  30. GC.STRUCTURE_TESTCASE,
  31. **self.kwargs)
  32. except Exceptions.baangtTestStepException as e:
  33. logger.critical(f"Unhandled Error happened in parallel run {parallelizationSequenceNumber}: " + str(e))
  34. utils.traceback(exception_in=e)
  35. dataRecord[GC.TESTCASESTATUS] = GC.TESTCASESTATUS_ERROR
  36. finally:
  37. d_t = datetime.fromtimestamp(time.time())
  38. results.put([{self.tcNumber: dataRecord}, {self.sequenceNumber: [self.tcNumber, d_t]}])