summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/library/unittest.rst16
-rw-r--r--Lib/test/test_unittest.py12
-rw-r--r--Lib/unittest/case.py13
3 files changed, 41 insertions, 0 deletions
diff --git a/Doc/library/unittest.rst b/Doc/library/unittest.rst
index 078c339..4de6829 100644
--- a/Doc/library/unittest.rst
+++ b/Doc/library/unittest.rst
@@ -955,6 +955,22 @@ Test cases
.. versionadded:: 2.7
+ .. method:: assertIsInstance(obj, cls[, msg])
+
+ This signals a test failure if *obj* is not an instance of *cls* (which
+ can be a class or a tuple of classes, as supported by :func:`isinstance`).
+
+ .. versionadded:: 2.7
+
+
+ .. method:: assertNotIsInstance(obj, cls[, msg])
+
+ The inverse of the :meth:`assertIsInstance` method. This signals a test
+ failure if *obj* is an instance of *cls*.
+
+ .. versionadded:: 2.7
+
+
.. method:: assertFalse(expr[, msg])
failIf(expr[, msg])
diff --git a/Lib/test/test_unittest.py b/Lib/test/test_unittest.py
index 459334b..de687e2 100644
--- a/Lib/test/test_unittest.py
+++ b/Lib/test/test_unittest.py
@@ -2500,6 +2500,18 @@ class Test_TestCase(TestCase, TestEquality, TestHashing):
self.assertIsNot(thing, object())
self.assertRaises(self.failureException, self.assertIsNot, thing, thing)
+ def testAssertIsInstance(self):
+ thing = []
+ self.assertIsInstance(thing, list)
+ self.assertRaises(self.failureException, self.assertIsInstance,
+ thing, dict)
+
+ def testAssertNotIsInstance(self):
+ thing = []
+ self.assertNotIsInstance(thing, dict)
+ self.assertRaises(self.failureException, self.assertNotIsInstance,
+ thing, list)
+
def testAssertIn(self):
animals = {'monkey': 'banana', 'cow': 'grass', 'seal': 'fish'}
diff --git a/Lib/unittest/case.py b/Lib/unittest/case.py
index fb96a88..113422c 100644
--- a/Lib/unittest/case.py
+++ b/Lib/unittest/case.py
@@ -817,6 +817,19 @@ class TestCase(object):
standardMsg = 'unexpectedly None'
self.fail(self._formatMessage(msg, standardMsg))
+ def assertIsInstance(self, obj, cls, msg=None):
+ """Same as self.assertTrue(isinstance(obj, cls)), with a nicer
+ default message."""
+ if not isinstance(obj, cls):
+ standardMsg = '%r is not an instance of %r' % (obj, cls)
+ self.fail(self._formatMessage(msg, standardMsg))
+
+ def assertNotIsInstance(self, obj, cls, msg=None):
+ """Included for symmetry with assertIsInstance."""
+ if isinstance(obj, cls):
+ standardMsg = '%r is an instance of %r' % (obj, cls)
+ self.fail(self._formatMessage(msg, standardMsg))
+
def assertRaisesRegexp(self, expected_exception, expected_regexp,
callable_obj=None, *args, **kwargs):
"""Asserts that the message in a raised exception matches a regexp.