mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
Merged revisions 78130 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r78130 | michael.foord | 2010-02-10 14:25:12 +0000 (Wed, 10 Feb 2010) | 1 line Issue 7893 and Issue 7588 ........
This commit is contained in:
parent
99f69ee7a1
commit
34c9462d71
7 changed files with 107 additions and 46 deletions
|
@ -60,4 +60,7 @@ from .suite import TestSuite
|
|||
from .loader import (TestLoader, defaultTestLoader, makeSuite, getTestCaseNames,
|
||||
findTestCases)
|
||||
from .main import TestProgram, main
|
||||
from .runner import TextTestRunner
|
||||
from .runner import TextTestRunner, TextTestResult
|
||||
|
||||
# deprecated
|
||||
_TextTestResult = TextTestResult
|
||||
|
|
|
@ -229,18 +229,15 @@ class TestCase(object):
|
|||
return result.TestResult()
|
||||
|
||||
def shortDescription(self):
|
||||
"""Returns both the test method name and first line of its docstring.
|
||||
"""Returns a one-line description of the test, or None if no
|
||||
description has been provided.
|
||||
|
||||
If no docstring is given, only returns the method name.
|
||||
The default implementation of this method returns the first line of
|
||||
the specified test method's docstring.
|
||||
"""
|
||||
desc = str(self)
|
||||
doc_first_line = None
|
||||
doc = self._testMethodDoc
|
||||
return doc and doc.split("\n")[0].strip() or None
|
||||
|
||||
if self._testMethodDoc:
|
||||
doc_first_line = self._testMethodDoc.split("\n")[0].strip()
|
||||
if doc_first_line:
|
||||
desc = '\n'.join((desc, doc_first_line))
|
||||
return desc
|
||||
|
||||
def id(self):
|
||||
return "%s.%s" % (util.strclass(self.__class__), self._testMethodName)
|
||||
|
@ -501,7 +498,6 @@ class TestCase(object):
|
|||
assertNotEquals = assertNotEqual
|
||||
assertAlmostEquals = assertAlmostEqual
|
||||
assertNotAlmostEquals = assertNotAlmostEqual
|
||||
assert_ = assertTrue
|
||||
|
||||
# These fail* assertion method names are pending deprecation and will
|
||||
# be a DeprecationWarning in 3.2; http://bugs.python.org/issue2578
|
||||
|
@ -518,6 +514,7 @@ class TestCase(object):
|
|||
failUnlessAlmostEqual = _deprecate(assertAlmostEqual)
|
||||
failIfAlmostEqual = _deprecate(assertNotAlmostEqual)
|
||||
failUnless = _deprecate(assertTrue)
|
||||
assert_ = _deprecate(assertTrue)
|
||||
failUnlessRaises = _deprecate(assertRaises)
|
||||
failIf = _deprecate(assertFalse)
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ class TestResult(object):
|
|||
|
||||
def startTest(self, test):
|
||||
"Called when the given test is about to be run"
|
||||
self.testsRun = self.testsRun + 1
|
||||
self.testsRun += 1
|
||||
|
||||
def startTestRun(self):
|
||||
"""Called once before any tests are executed.
|
||||
|
@ -36,8 +36,7 @@ class TestResult(object):
|
|||
"""
|
||||
|
||||
def stopTest(self, test):
|
||||
"Called when the given test has been run"
|
||||
pass
|
||||
"""Called when the given test has been run"""
|
||||
|
||||
def stopTestRun(self):
|
||||
"""Called once after all tests are executed.
|
||||
|
|
|
@ -22,7 +22,7 @@ class _WritelnDecorator(object):
|
|||
self.write('\n') # text-mode streams translate to \r\n if needed
|
||||
|
||||
|
||||
class _TextTestResult(result.TestResult):
|
||||
class TextTestResult(result.TestResult):
|
||||
"""A test result class that can print formatted text results to a stream.
|
||||
|
||||
Used by TextTestRunner.
|
||||
|
@ -31,27 +31,28 @@ class _TextTestResult(result.TestResult):
|
|||
separator2 = '-' * 70
|
||||
|
||||
def __init__(self, stream, descriptions, verbosity):
|
||||
super(_TextTestResult, self).__init__()
|
||||
super(TextTestResult, self).__init__()
|
||||
self.stream = stream
|
||||
self.showAll = verbosity > 1
|
||||
self.dots = verbosity == 1
|
||||
self.descriptions = descriptions
|
||||
|
||||
def getDescription(self, test):
|
||||
if self.descriptions:
|
||||
return test.shortDescription() or str(test)
|
||||
doc_first_line = test.shortDescription()
|
||||
if self.descriptions and doc_first_line:
|
||||
return '\n'.join((str(test), doc_first_line))
|
||||
else:
|
||||
return str(test)
|
||||
|
||||
def startTest(self, test):
|
||||
super(_TextTestResult, self).startTest(test)
|
||||
super(TextTestResult, self).startTest(test)
|
||||
if self.showAll:
|
||||
self.stream.write(self.getDescription(test))
|
||||
self.stream.write(" ... ")
|
||||
self.stream.flush()
|
||||
|
||||
def addSuccess(self, test):
|
||||
super(_TextTestResult, self).addSuccess(test)
|
||||
super(TextTestResult, self).addSuccess(test)
|
||||
if self.showAll:
|
||||
self.stream.writeln("ok")
|
||||
elif self.dots:
|
||||
|
@ -59,7 +60,7 @@ class _TextTestResult(result.TestResult):
|
|||
self.stream.flush()
|
||||
|
||||
def addError(self, test, err):
|
||||
super(_TextTestResult, self).addError(test, err)
|
||||
super(TextTestResult, self).addError(test, err)
|
||||
if self.showAll:
|
||||
self.stream.writeln("ERROR")
|
||||
elif self.dots:
|
||||
|
@ -67,7 +68,7 @@ class _TextTestResult(result.TestResult):
|
|||
self.stream.flush()
|
||||
|
||||
def addFailure(self, test, err):
|
||||
super(_TextTestResult, self).addFailure(test, err)
|
||||
super(TextTestResult, self).addFailure(test, err)
|
||||
if self.showAll:
|
||||
self.stream.writeln("FAIL")
|
||||
elif self.dots:
|
||||
|
@ -75,7 +76,7 @@ class _TextTestResult(result.TestResult):
|
|||
self.stream.flush()
|
||||
|
||||
def addSkip(self, test, reason):
|
||||
super(_TextTestResult, self).addSkip(test, reason)
|
||||
super(TextTestResult, self).addSkip(test, reason)
|
||||
if self.showAll:
|
||||
self.stream.writeln("skipped {0!r}".format(reason))
|
||||
elif self.dots:
|
||||
|
@ -83,7 +84,7 @@ class _TextTestResult(result.TestResult):
|
|||
self.stream.flush()
|
||||
|
||||
def addExpectedFailure(self, test, err):
|
||||
super(_TextTestResult, self).addExpectedFailure(test, err)
|
||||
super(TextTestResult, self).addExpectedFailure(test, err)
|
||||
if self.showAll:
|
||||
self.stream.writeln("expected failure")
|
||||
elif self.dots:
|
||||
|
@ -91,7 +92,7 @@ class _TextTestResult(result.TestResult):
|
|||
self.stream.flush()
|
||||
|
||||
def addUnexpectedSuccess(self, test):
|
||||
super(_TextTestResult, self).addUnexpectedSuccess(test)
|
||||
super(TextTestResult, self).addUnexpectedSuccess(test)
|
||||
if self.showAll:
|
||||
self.stream.writeln("unexpected success")
|
||||
elif self.dots:
|
||||
|
@ -118,13 +119,18 @@ class TextTestRunner(object):
|
|||
It prints out the names of tests as they are run, errors as they
|
||||
occur, and a summary of the results at the end of the test run.
|
||||
"""
|
||||
def __init__(self, stream=sys.stderr, descriptions=1, verbosity=1):
|
||||
resultclass = TextTestResult
|
||||
|
||||
def __init__(self, stream=sys.stderr, descriptions=True, verbosity=1,
|
||||
resultclass=None):
|
||||
self.stream = _WritelnDecorator(stream)
|
||||
self.descriptions = descriptions
|
||||
self.verbosity = verbosity
|
||||
if resultclass is not None:
|
||||
self.resultclass = resultclass
|
||||
|
||||
def _makeResult(self):
|
||||
return _TextTestResult(self.stream, self.descriptions, self.verbosity)
|
||||
return self.resultclass(self.stream, self.descriptions, self.verbosity)
|
||||
|
||||
def run(self, test):
|
||||
"Run the given test case or test suite."
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue