summaryrefslogtreecommitdiffstats
path: root/chrome/test/pyautolib
diff options
context:
space:
mode:
authornirnimesh@chromium.org <nirnimesh@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-21 00:52:23 +0000
committernirnimesh@chromium.org <nirnimesh@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-21 00:52:23 +0000
commit37865795c0f6cdcba6c0299b2ac56651c96520bc (patch)
treedeb6f3f34a487490de23bfa0d60c1f55757e5550 /chrome/test/pyautolib
parentab57ea34e2049ec93d3dbf3f85d8810896f3d505 (diff)
downloadchromium_src-37865795c0f6cdcba6c0299b2ac56651c96520bc.zip
chromium_src-37865795c0f6cdcba6c0299b2ac56651c96520bc.tar.gz
chromium_src-37865795c0f6cdcba6c0299b2ac56651c96520bc.tar.bz2
Produce gtest style output with pyauto.
This makes it easy to digest pass/fail status for individual tests ("OK" is more discoverable than '.' in the output log). And makes it easier to associate LOG messages from chrome with the individual tests triggering them. BUG=42148 Review URL: http://codereview.chromium.org/3191014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56951 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/test/pyautolib')
-rw-r--r--chrome/test/pyautolib/pyauto.py53
1 files changed, 52 insertions, 1 deletions
diff --git a/chrome/test/pyautolib/pyauto.py b/chrome/test/pyautolib/pyauto.py
index ee090ee..4659f04 100644
--- a/chrome/test/pyautolib/pyauto.py
+++ b/chrome/test/pyautolib/pyauto.py
@@ -1348,6 +1348,57 @@ class PyUITestSuite(pyautolib.PyUITestSuiteBase, unittest.TestSuite):
pyautolib.PyUITestSuiteBase.__del__(self)
+class _GTestTextTestResult(unittest._TextTestResult):
+ """A test result class that can print formatted text results to a stream.
+
+ Results printed in conformance with gtest output format, like:
+ [ RUN ] autofill.AutoFillTest.testAutofillInvalid: "test desc."
+ [ OK ] autofill.AutoFillTest.testAutofillInvalid
+ [ RUN ] autofill.AutoFillTest.testFillProfile: "test desc."
+ [ OK ] autofill.AutoFillTest.testFillProfile
+ [ RUN ] autofill.AutoFillTest.testFillProfileCrazyCharacters: "Test."
+ [ OK ] autofill.AutoFillTest.testFillProfileCrazyCharacters
+ """
+ def __init__(self, stream, descriptions, verbosity):
+ unittest._TextTestResult.__init__(self, stream, descriptions, verbosity)
+
+ def _GetTestURI(self, test):
+ return '%s.%s' % (unittest._strclass(test.__class__), test._testMethodName)
+
+ def getDescription(self, test):
+ return '%s: "%s"' % (self._GetTestURI(test), test.shortDescription())
+
+ def startTest(self, test):
+ unittest.TestResult.startTest(self, test)
+ self.stream.writeln('[ RUN ] %s' % self.getDescription(test))
+
+ def addSuccess(self, test):
+ unittest.TestResult.addSuccess(self, test)
+ self.stream.writeln('[ OK ] %s' % self._GetTestURI(test))
+
+ def addError(self, test, err):
+ unittest.TestResult.addError(self, test, err)
+ self.stream.writeln('[ ERROR ] %s' % self._GetTestURI(test))
+
+ def addFailure(self, test, err):
+ unittest.TestResult.addFailure(self, test, err)
+ self.stream.writeln('[ FAILED ] %s' % self._GetTestURI(test))
+
+
+class PyAutoTextTestRuner(unittest.TextTestRunner):
+ """Test Runner for PyAuto tests that displays results in textual format.
+
+ Results are displayed in conformance with gtest output.
+ """
+ def __init__(self, verbosity=1):
+ unittest.TextTestRunner.__init__(self,
+ stream=sys.stderr,
+ verbosity=verbosity)
+
+ def _makeResult(self):
+ return _GTestTextTestResult(self.stream, self.descriptions, self.verbosity)
+
+
# Implementation inspired from unittest.main()
class Main(object):
"""Main program for running PyAuto tests."""
@@ -1575,7 +1626,7 @@ class Main(object):
verbosity = 1
if self._options.verbose:
verbosity = 2
- result = unittest.TextTestRunner(verbosity=verbosity).run(pyauto_suite)
+ result = PyAutoTextTestRuner(verbosity=verbosity).run(pyauto_suite)
del loaded_tests # Need to destroy test cases before the suite
del pyauto_suite
sys.exit(not result.wasSuccessful())