[Python-checkins] r71263 - in python/trunk: Doc/library/unittest.rst Lib/test/test_unittest.py Lib/unittest.py Misc/NEWS

michael.foord python-checkins at python.org
Sun Apr 5 21:19:32 CEST 2009


Author: michael.foord
Date: Sun Apr 5 21:19:28 2009
New Revision: 71263
Log:
Adding assertIs and assertIsNot methods to unittest.TestCase
Issue #2578
Modified:
 python/trunk/Doc/library/unittest.rst
 python/trunk/Lib/test/test_unittest.py
 python/trunk/Lib/unittest.py
 python/trunk/Misc/NEWS
Modified: python/trunk/Doc/library/unittest.rst
==============================================================================
--- python/trunk/Doc/library/unittest.rst	(original)
+++ python/trunk/Doc/library/unittest.rst	Sun Apr 5 21:19:28 2009
@@ -859,6 +859,23 @@
 .. versionadded:: 2.7
 
 
+ .. method:: assertIs(expr1, expr2[, msg])
+
+ This signals a test failure if *expr1* and *expr2* don't evaluate to the same
+ object.
+
+ .. versionadded:: 2.7
+
+
+ .. method:: assertIsNot(expr1, expr2[, msg])
+
+ The inverse of the :meth:`assertIs` method.
+ This signals a test failure if *expr1* and *expr2* evaluate to the same
+ object.
+
+ .. versionadded:: 2.7
+
+
 .. method:: assertFalse(expr[, msg])
 failIf(expr[, msg])
 
Modified: python/trunk/Lib/test/test_unittest.py
==============================================================================
--- python/trunk/Lib/test/test_unittest.py	(original)
+++ python/trunk/Lib/test/test_unittest.py	Sun Apr 5 21:19:28 2009
@@ -2301,6 +2301,16 @@
 # from this TestCase instance but since its a local nothing else
 # will ever notice that.
 
+ def testAssertIs(self):
+ thing = object()
+ self.assertIs(thing, thing)
+ self.assertRaises(self.failureException, self.assertIs, thing, object())
+
+ def testAssertIsNot(self):
+ thing = object()
+ self.assertIsNot(thing, object())
+ self.assertRaises(self.failureException, self.assertIsNot, thing, thing)
+
 def testAssertIn(self):
 animals = {'monkey': 'banana', 'cow': 'grass', 'seal': 'fish'}
 
@@ -2444,6 +2454,7 @@
 
 # Test that sequences of unhashable objects can be tested for sameness:
 self.assertSameElements([[1, 2], [3, 4]], [[3, 4], [1, 2]])
+
 self.assertSameElements([{'a': 1}, {'b': 2}], [{'b': 2}, {'a': 1}])
 self.assertRaises(self.failureException, self.assertSameElements,
 [[1]], [[2]])
@@ -3016,6 +3027,18 @@
 "^unexpectedly None$",
 "^unexpectedly None : oops$"])
 
+ def testAssertIs(self):
+ self.assertMessages('assertIs', (None, 'foo'),
+ ["^None is not 'foo'$", "^oops$",
+ "^None is not 'foo'$",
+ "^None is not 'foo' : oops$"])
+
+ def testAssertIsNot(self):
+ self.assertMessages('assertIsNot', (None, None),
+ ["^unexpectedly identical: None$", "^oops$",
+ "^unexpectedly identical: None$",
+ "^unexpectedly identical: None : oops$"])
+
 
 ######################################################################
 ## Main
Modified: python/trunk/Lib/unittest.py
==============================================================================
--- python/trunk/Lib/unittest.py	(original)
+++ python/trunk/Lib/unittest.py	Sun Apr 5 21:19:28 2009
@@ -806,6 +806,18 @@
 standardMsg = '%r unexpectedly found in %r' % (member, container)
 self.fail(self._formatMessage(msg, standardMsg))
 
+ def assertIs(self, expr1, expr2, msg=None):
+ """Just like self.assertTrue(a is b), but with a nicer default message."""
+ if expr1 is not expr2:
+ standardMsg = '%r is not %r' % (expr1, expr2)
+ self.fail(self._formatMessage(msg, standardMsg))
+
+ def assertIsNot(self, expr1, expr2, msg=None):
+ """Just like self.assertTrue(a is not b), but with a nicer default message."""
+ if expr1 is expr2:
+ standardMsg = 'unexpectedly identical: %r' % (expr1,)
+ self.fail(self._formatMessage(msg, standardMsg))
+
 def assertDictEqual(self, d1, d2, msg=None):
 self.assert_(isinstance(d1, dict), 'First argument is not a dictionary')
 self.assert_(isinstance(d2, dict), 'Second argument is not a dictionary')
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Sun Apr 5 21:19:28 2009
@@ -212,6 +212,8 @@
 Library
 -------
 
+- Issue 5693: TestSuite.__iter__ can now be consistently overridden in subclasses.
+
 - Issue 5694: removed spurious test output in Distutils (test_clean).
 
 - Issue 5471: Fix os.path.expanduser() for $HOME set to '/'.


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /