Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from unittest.runner import TextTestResult
- from django.test.runner import DiscoverRunner
- import time
- class TimeLoggingTestRunner(DiscoverRunner):
- def __init__(self, slow_test_threshold=0.0, *args, **kwargs):
- self.slow_test_threshold = slow_test_threshold
- return super().__init__(
- resultclass=TimeLoggingTestResult,
- *args,
- **kwargs,
- )
- def run(self, test):
- result = super().run(test)
- self.stream.writeln(
- "nSlow Tests (>{:.03}s):".format(
- self.slow_test_threshold))
- for name, elapsed in result.getTestTimings():
- if elapsed > self.slow_test_threshold:
- self.stream.writeln(
- "({:.03}s) {}".format(
- elapsed, name))
- return result
- def get_resultclass(self):
- return TimeLoggingTestResult
- class TimeLoggingTestResult(TextTestResult):
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- self.test_timings = []
- def startTest(self, test):
- self._test_started_at = time.time()
- super().startTest(test)
- def addSuccess(self, test):
- elapsed = time.time() - self._test_started_at
- name = self.getDescription(test)
- self.test_timings.append((name, elapsed))
- super().addSuccess(test)
- def getTestTimings(self):
- return self.test_timings
- TEST_RUNNER = 'core.utils.test_runner.runner.TimeLoggingTestRunner'
Add Comment
Please, Sign In to add comment