diff options
author | nirnimesh@chromium.org <nirnimesh@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-21 00:52:23 +0000 |
---|---|---|
committer | nirnimesh@chromium.org <nirnimesh@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-21 00:52:23 +0000 |
commit | 37865795c0f6cdcba6c0299b2ac56651c96520bc (patch) | |
tree | deb6f3f34a487490de23bfa0d60c1f55757e5550 /chrome/test/pyautolib | |
parent | ab57ea34e2049ec93d3dbf3f85d8810896f3d505 (diff) | |
download | chromium_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.py | 53 |
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()) |