diff options
author | Georg Brandl <georg@python.org> | 2009-10-01 20:59:31 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2009-10-01 20:59:31 (GMT) |
commit | f895cf5d33f68bfd750e4cce19f3785096812e34 (patch) | |
tree | 8e87952720331e39333b6c5339c10983ab8830e0 | |
parent | 46cc46af07b3d2e495117f10e591cf1dfc77608e (diff) | |
download | cpython-f895cf5d33f68bfd750e4cce19f3785096812e34.zip cpython-f895cf5d33f68bfd750e4cce19f3785096812e34.tar.gz cpython-f895cf5d33f68bfd750e4cce19f3785096812e34.tar.bz2 |
#7031: Add TestCase.assertIsInstance and negated method.
-rw-r--r-- | Doc/library/unittest.rst | 16 | ||||
-rw-r--r-- | Lib/test/test_unittest.py | 12 | ||||
-rw-r--r-- | Lib/unittest/case.py | 13 |
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. |