From a873a190946d55093e90adc88b008a79fa4fafa4 Mon Sep 17 00:00:00 2001 From: Aditya Hase Date: Thu, 7 Mar 2019 22:27:57 +0530 Subject: [PATCH 1/2] feat(tests): Record time required for each test --- frappe/test_runner.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/frappe/test_runner.py b/frappe/test_runner.py index 6ee25a86db..98b5df3c2f 100644 --- a/frappe/test_runner.py +++ b/frappe/test_runner.py @@ -5,6 +5,7 @@ from __future__ import unicode_literals, print_function import frappe import unittest, json, sys, os +import time import xmlrunner import importlib from frappe.modules import load_doctype_module, get_module_name @@ -90,6 +91,19 @@ def set_test_email_config(): "admin_password": "admin" }) + +class TimeLoggingTestResult(unittest.TextTestResult): + def startTest(self, test): + self._started_at = time.time() + super().startTest(test) + + def addSuccess(self, test): + elapsed = time.time() - self._started_at + name = self.getDescription(test) + self.stream.write("\n{} ({:.03}s)\n".format(name, elapsed)) + super().addSuccess(test) + + def run_all_tests(app=None, verbose=False, profile=False, ui_tests=False, failfast=False): import os @@ -115,7 +129,7 @@ def run_all_tests(app=None, verbose=False, profile=False, ui_tests=False, failfa pr = cProfile.Profile() pr.enable() - out = unittest_runner(verbosity=1+(verbose and 1 or 0), failfast=failfast).run(test_suite) + out = unittest_runner(resultclass=TimeLoggingTestResult, verbosity=1+(verbose and 1 or 0), failfast=failfast).run(test_suite) if profile: pr.disable() From e358841d3c5f09d9e5ce75908c07d849e3b756e9 Mon Sep 17 00:00:00 2001 From: Aditya Hase Date: Fri, 8 Mar 2019 12:24:02 +0530 Subject: [PATCH 2/2] fix(python3): super() backward compatibility fix --- frappe/test_runner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frappe/test_runner.py b/frappe/test_runner.py index 98b5df3c2f..a27c5539b6 100644 --- a/frappe/test_runner.py +++ b/frappe/test_runner.py @@ -95,13 +95,13 @@ def set_test_email_config(): class TimeLoggingTestResult(unittest.TextTestResult): def startTest(self, test): self._started_at = time.time() - super().startTest(test) + super(TimeLoggingTestResult, self).startTest(test) def addSuccess(self, test): elapsed = time.time() - self._started_at name = self.getDescription(test) self.stream.write("\n{} ({:.03}s)\n".format(name, elapsed)) - super().addSuccess(test) + super(TimeLoggingTestResult, self).addSuccess(test) def run_all_tests(app=None, verbose=False, profile=False, ui_tests=False, failfast=False):