diff options
-rw-r--r-- | chrome/test/pyautolib/pyauto.py | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/chrome/test/pyautolib/pyauto.py b/chrome/test/pyautolib/pyauto.py index ee090ee..18fcf10 100644 --- a/chrome/test/pyautolib/pyauto.py +++ b/chrome/test/pyautolib/pyauto.py @@ -1348,6 +1348,60 @@ 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): + if sys.version_info[:2] <= (2, 4): + return '%s.%s' % (unittest._strclass(test.__class__), + test._TestCase__testMethodName) + 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 +1629,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()) |