mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
Patch #1388073: Make unittest.TestCase easier to subclass
This commit is contained in:
parent
d704817b66
commit
81cdb4ebe1
1 changed files with 13 additions and 13 deletions
|
@ -201,9 +201,9 @@ class TestCase:
|
||||||
not have a method with the specified name.
|
not have a method with the specified name.
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
self.__testMethodName = methodName
|
self._testMethodName = methodName
|
||||||
testMethod = getattr(self, methodName)
|
testMethod = getattr(self, methodName)
|
||||||
self.__testMethodDoc = testMethod.__doc__
|
self._testMethodDoc = testMethod.__doc__
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
raise ValueError, "no such test method in %s: %s" % \
|
raise ValueError, "no such test method in %s: %s" % \
|
||||||
(self.__class__, methodName)
|
(self.__class__, methodName)
|
||||||
|
@ -229,30 +229,30 @@ class TestCase:
|
||||||
The default implementation of this method returns the first line of
|
The default implementation of this method returns the first line of
|
||||||
the specified test method's docstring.
|
the specified test method's docstring.
|
||||||
"""
|
"""
|
||||||
doc = self.__testMethodDoc
|
doc = self._testMethodDoc
|
||||||
return doc and doc.split("\n")[0].strip() or None
|
return doc and doc.split("\n")[0].strip() or None
|
||||||
|
|
||||||
def id(self):
|
def id(self):
|
||||||
return "%s.%s" % (_strclass(self.__class__), self.__testMethodName)
|
return "%s.%s" % (_strclass(self.__class__), self._testMethodName)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "%s (%s)" % (self.__testMethodName, _strclass(self.__class__))
|
return "%s (%s)" % (self._testMethodName, _strclass(self.__class__))
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "<%s testMethod=%s>" % \
|
return "<%s testMethod=%s>" % \
|
||||||
(_strclass(self.__class__), self.__testMethodName)
|
(_strclass(self.__class__), self._testMethodName)
|
||||||
|
|
||||||
def run(self, result=None):
|
def run(self, result=None):
|
||||||
if result is None: result = self.defaultTestResult()
|
if result is None: result = self.defaultTestResult()
|
||||||
result.startTest(self)
|
result.startTest(self)
|
||||||
testMethod = getattr(self, self.__testMethodName)
|
testMethod = getattr(self, self._testMethodName)
|
||||||
try:
|
try:
|
||||||
try:
|
try:
|
||||||
self.setUp()
|
self.setUp()
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
raise
|
raise
|
||||||
except:
|
except:
|
||||||
result.addError(self, self.__exc_info())
|
result.addError(self, self._exc_info())
|
||||||
return
|
return
|
||||||
|
|
||||||
ok = False
|
ok = False
|
||||||
|
@ -260,18 +260,18 @@ class TestCase:
|
||||||
testMethod()
|
testMethod()
|
||||||
ok = True
|
ok = True
|
||||||
except self.failureException:
|
except self.failureException:
|
||||||
result.addFailure(self, self.__exc_info())
|
result.addFailure(self, self._exc_info())
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
raise
|
raise
|
||||||
except:
|
except:
|
||||||
result.addError(self, self.__exc_info())
|
result.addError(self, self._exc_info())
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.tearDown()
|
self.tearDown()
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
raise
|
raise
|
||||||
except:
|
except:
|
||||||
result.addError(self, self.__exc_info())
|
result.addError(self, self._exc_info())
|
||||||
ok = False
|
ok = False
|
||||||
if ok: result.addSuccess(self)
|
if ok: result.addSuccess(self)
|
||||||
finally:
|
finally:
|
||||||
|
@ -283,10 +283,10 @@ class TestCase:
|
||||||
def debug(self):
|
def debug(self):
|
||||||
"""Run the test without collecting errors in a TestResult"""
|
"""Run the test without collecting errors in a TestResult"""
|
||||||
self.setUp()
|
self.setUp()
|
||||||
getattr(self, self.__testMethodName)()
|
getattr(self, self._testMethodName)()
|
||||||
self.tearDown()
|
self.tearDown()
|
||||||
|
|
||||||
def __exc_info(self):
|
def _exc_info(self):
|
||||||
"""Return a version of sys.exc_info() with the traceback frame
|
"""Return a version of sys.exc_info() with the traceback frame
|
||||||
minimised; usually the top level of the traceback frame is not
|
minimised; usually the top level of the traceback frame is not
|
||||||
needed.
|
needed.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue