Guest User

Untitled

a guest
Jun 18th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. from unittest.runner import TextTestResult
  2. from django.test.runner import DiscoverRunner
  3.  
  4. import time
  5.  
  6. class TimeLoggingTestRunner(DiscoverRunner):
  7. def __init__(self, slow_test_threshold=0.0, *args, **kwargs):
  8. self.slow_test_threshold = slow_test_threshold
  9. return super().__init__(
  10. resultclass=TimeLoggingTestResult,
  11. *args,
  12. **kwargs,
  13. )
  14. def run(self, test):
  15. result = super().run(test)
  16. self.stream.writeln(
  17. "nSlow Tests (>{:.03}s):".format(
  18. self.slow_test_threshold))
  19. for name, elapsed in result.getTestTimings():
  20. if elapsed > self.slow_test_threshold:
  21. self.stream.writeln(
  22. "({:.03}s) {}".format(
  23. elapsed, name))
  24. return result
  25.  
  26. def get_resultclass(self):
  27. return TimeLoggingTestResult
  28.  
  29. class TimeLoggingTestResult(TextTestResult):
  30. def __init__(self, *args, **kwargs):
  31. super().__init__(*args, **kwargs)
  32. self.test_timings = []
  33. def startTest(self, test):
  34. self._test_started_at = time.time()
  35. super().startTest(test)
  36. def addSuccess(self, test):
  37. elapsed = time.time() - self._test_started_at
  38. name = self.getDescription(test)
  39. self.test_timings.append((name, elapsed))
  40. super().addSuccess(test)
  41. def getTestTimings(self):
  42. return self.test_timings
  43.  
  44. TEST_RUNNER = 'core.utils.test_runner.runner.TimeLoggingTestRunner'
Add Comment
Please, Sign In to add comment