Remove unittest methods scheduled for removal in 3.3 -- makes the unittest test suite pass again.

This commit is contained in:
Georg Brandl 2011-02-20 11:18:09 +00:00
parent fa2c61a222
commit 2cebdd4865
5 changed files with 9 additions and 152 deletions

View File

@ -938,77 +938,6 @@ class TestCase(object):
standardMsg = self._truncateMessage(standardMsg, diff) standardMsg = self._truncateMessage(standardMsg, diff)
self.fail(self._formatMessage(msg, standardMsg)) self.fail(self._formatMessage(msg, standardMsg))
def assertDictContainsSubset(self, subset, dictionary, msg=None):
"""Checks whether dictionary is a superset of subset."""
warnings.warn('assertDictContainsSubset is deprecated',
DeprecationWarning)
missing = []
mismatched = []
for key, value in subset.items():
if key not in dictionary:
missing.append(key)
elif value != dictionary[key]:
mismatched.append('%s, expected: %s, actual: %s' %
(safe_repr(key), safe_repr(value),
safe_repr(dictionary[key])))
if not (missing or mismatched):
return
standardMsg = ''
if missing:
standardMsg = 'Missing: %s' % ','.join(safe_repr(m) for m in
missing)
if mismatched:
if standardMsg:
standardMsg += '; '
standardMsg += 'Mismatched values: %s' % ','.join(mismatched)
self.fail(self._formatMessage(msg, standardMsg))
def assertSameElements(self, expected_seq, actual_seq, msg=None):
"""An unordered sequence specific comparison.
Raises with an error message listing which elements of expected_seq
are missing from actual_seq and vice versa if any.
Duplicate elements are ignored when comparing *expected_seq* and
*actual_seq*. It is the equivalent of ``assertEqual(set(expected),
set(actual))`` but it works with sequences of unhashable objects as
well.
"""
warnings.warn('assertSameElements is deprecated',
DeprecationWarning)
try:
expected = set(expected_seq)
actual = set(actual_seq)
missing = sorted(expected.difference(actual))
unexpected = sorted(actual.difference(expected))
except TypeError:
# Fall back to slower list-compare if any of the objects are
# not hashable.
expected = list(expected_seq)
actual = list(actual_seq)
try:
expected.sort()
actual.sort()
except TypeError:
missing, unexpected = unorderable_list_difference(expected,
actual)
else:
missing, unexpected = sorted_list_difference(expected, actual)
errors = []
if missing:
errors.append('Expected, but missing:\n %s' %
safe_repr(missing))
if unexpected:
errors.append('Unexpected, but present:\n %s' %
safe_repr(unexpected))
if errors:
standardMsg = '\n'.join(errors)
self.fail(self._formatMessage(msg, standardMsg))
def assertCountEqual(self, first, second, msg=None): def assertCountEqual(self, first, second, msg=None):
"""An unordered sequence comparison asserting that the same elements, """An unordered sequence comparison asserting that the same elements,
regardless of order. If the same element occurs more than once, regardless of order. If the same element occurs more than once,
@ -1183,13 +1112,11 @@ class TestCase(object):
# The fail* methods can be removed in 3.3, the 5 assert* methods will # The fail* methods can be removed in 3.3, the 5 assert* methods will
# have to stay around for a few more versions. See #9424. # have to stay around for a few more versions. See #9424.
failUnlessEqual = assertEquals = _deprecate(assertEqual) assertEquals = _deprecate(assertEqual)
failIfEqual = assertNotEquals = _deprecate(assertNotEqual) assertNotEquals = _deprecate(assertNotEqual)
failUnlessAlmostEqual = assertAlmostEquals = _deprecate(assertAlmostEqual) assertAlmostEquals = _deprecate(assertAlmostEqual)
failIfAlmostEqual = assertNotAlmostEquals = _deprecate(assertNotAlmostEqual) assertNotAlmostEquals = _deprecate(assertNotAlmostEqual)
failUnless = assert_ = _deprecate(assertTrue) assert_ = _deprecate(assertTrue)
failUnlessRaises = _deprecate(assertRaises)
failIf = _deprecate(assertFalse)
assertRaisesRegexp = _deprecate(assertRaisesRegex) assertRaisesRegexp = _deprecate(assertRaisesRegex)
assertRegexpMatches = _deprecate(assertRegex) assertRegexpMatches = _deprecate(assertRegex)

View File

@ -19,17 +19,12 @@ def warnfun():
warnings.warn('rw', RuntimeWarning) warnings.warn('rw', RuntimeWarning)
class TestWarnings(unittest.TestCase): class TestWarnings(unittest.TestCase):
# unittest warnings will be printed at most once per type (max one message # unittest warnings will be printed at most once per type
# for the fail* methods, and one for the assert* methods)
def test_assert(self): def test_assert(self):
self.assertEquals(2+2, 4) self.assertEquals(2+2, 4)
self.assertEquals(2*2, 4) self.assertEquals(2*2, 4)
self.assertEquals(2**2, 4) self.assertEquals(2**2, 4)
def test_fail(self):
self.failUnless(1)
self.failUnless(True)
def test_other_unittest(self): def test_other_unittest(self):
self.assertAlmostEqual(2+2, 4) self.assertAlmostEqual(2+2, 4)
self.assertNotAlmostEqual(4+4, 2) self.assertNotAlmostEqual(4+4, 2)

View File

@ -223,15 +223,6 @@ class TestLongMessage(unittest.TestCase):
"\+ \{'key': 'value'\}$", "\+ \{'key': 'value'\}$",
"\+ \{'key': 'value'\} : oops$"]) "\+ \{'key': 'value'\} : oops$"])
def testAssertDictContainsSubset(self):
with warnings.catch_warnings():
warnings.simplefilter("ignore", DeprecationWarning)
self.assertMessages('assertDictContainsSubset', ({'key': 'value'}, {}),
["^Missing: 'key'$", "^oops$",
"^Missing: 'key'$",
"^Missing: 'key' : oops$"])
def testAssertMultiLineEqual(self): def testAssertMultiLineEqual(self):
self.assertMessages('assertMultiLineEqual', ("", "foo"), self.assertMessages('assertMultiLineEqual', ("", "foo"),
[r"\+ foo$", "^oops$", [r"\+ foo$", "^oops$",

View File

@ -488,36 +488,6 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing):
self.assertRaises(self.failureException, self.assertNotIn, 'cow', self.assertRaises(self.failureException, self.assertNotIn, 'cow',
animals) animals)
def testAssertDictContainsSubset(self):
with warnings.catch_warnings():
warnings.simplefilter("ignore", DeprecationWarning)
self.assertDictContainsSubset({}, {})
self.assertDictContainsSubset({}, {'a': 1})
self.assertDictContainsSubset({'a': 1}, {'a': 1})
self.assertDictContainsSubset({'a': 1}, {'a': 1, 'b': 2})
self.assertDictContainsSubset({'a': 1, 'b': 2}, {'a': 1, 'b': 2})
with self.assertRaises(self.failureException):
self.assertDictContainsSubset({1: "one"}, {})
with self.assertRaises(self.failureException):
self.assertDictContainsSubset({'a': 2}, {'a': 1})
with self.assertRaises(self.failureException):
self.assertDictContainsSubset({'c': 1}, {'a': 1})
with self.assertRaises(self.failureException):
self.assertDictContainsSubset({'a': 1, 'c': 1}, {'a': 1})
with self.assertRaises(self.failureException):
self.assertDictContainsSubset({'a': 1, 'c': 1}, {'a': 1})
one = ''.join(chr(i) for i in range(255))
# this used to cause a UnicodeDecodeError constructing the failure msg
with self.assertRaises(self.failureException):
self.assertDictContainsSubset({'foo': one}, {'foo': '\uFFFD'})
def testAssertEqual(self): def testAssertEqual(self):
equal_pairs = [ equal_pairs = [
((), ()), ((), ()),
@ -1094,20 +1064,11 @@ test case
have to stay around for a few more versions. See #9424. have to stay around for a few more versions. See #9424.
""" """
old = ( old = (
(self.failIfEqual, (3, 5)),
(self.assertNotEquals, (3, 5)), (self.assertNotEquals, (3, 5)),
(self.failUnlessEqual, (3, 3)),
(self.assertEquals, (3, 3)), (self.assertEquals, (3, 3)),
(self.failUnlessAlmostEqual, (2.0, 2.0)),
(self.assertAlmostEquals, (2.0, 2.0)), (self.assertAlmostEquals, (2.0, 2.0)),
(self.failIfAlmostEqual, (3.0, 5.0)),
(self.assertNotAlmostEquals, (3.0, 5.0)), (self.assertNotAlmostEquals, (3.0, 5.0)),
(self.failUnless, (True,)),
(self.assert_, (True,)), (self.assert_, (True,)),
(self.failUnlessRaises, (TypeError, lambda _: 3.14 + 'spam')),
(self.failIf, (False,)),
(self.assertSameElements, ([1, 1, 2, 3], [1, 2, 3])),
(self.assertDictContainsSubset, (dict(a=1, b=2), dict(a=1, b=2, c=3))),
(self.assertRaisesRegexp, (KeyError, 'foo', lambda: {}['foo'])), (self.assertRaisesRegexp, (KeyError, 'foo', lambda: {}['foo'])),
(self.assertRegexpMatches, ('bar', 'bar')), (self.assertRegexpMatches, ('bar', 'bar')),
) )
@ -1115,19 +1076,6 @@ test case
with self.assertWarns(DeprecationWarning): with self.assertWarns(DeprecationWarning):
meth(*args) meth(*args)
def testDeprecatedFailMethods(self):
"""Test that the deprecated fail* methods get removed in 3.3"""
if sys.version_info[:2] < (3, 3):
return
deprecated_names = [
'failIfEqual', 'failUnlessEqual', 'failUnlessAlmostEqual',
'failIfAlmostEqual', 'failUnless', 'failUnlessRaises', 'failIf',
'assertSameElements', 'assertDictContainsSubset',
]
for deprecated_name in deprecated_names:
with self.assertRaises(AttributeError):
getattr(self, deprecated_name) # remove these in 3.3
def testDeepcopy(self): def testDeepcopy(self):
# Issue: 5660 # Issue: 5660
class TestableTest(unittest.TestCase): class TestableTest(unittest.TestCase):

View File

@ -257,19 +257,17 @@ class Test_TextTestRunner(unittest.TestCase):
return [b.splitlines() for b in p.communicate()] return [b.splitlines() for b in p.communicate()]
opts = dict(stdout=subprocess.PIPE, stderr=subprocess.PIPE, opts = dict(stdout=subprocess.PIPE, stderr=subprocess.PIPE,
cwd=os.path.dirname(__file__)) cwd=os.path.dirname(__file__))
ae_msg = b'Please use assertEqual instead.'
at_msg = b'Please use assertTrue instead.'
# no args -> all the warnings are printed, unittest warnings only once # no args -> all the warnings are printed, unittest warnings only once
p = subprocess.Popen([sys.executable, '_test_warnings.py'], **opts) p = subprocess.Popen([sys.executable, '_test_warnings.py'], **opts)
out, err = get_parse_out_err(p) out, err = get_parse_out_err(p)
self.assertIn(b'OK', err) self.assertIn(b'OK', err)
# check that the total number of warnings in the output is correct # check that the total number of warnings in the output is correct
self.assertEqual(len(out), 12) self.assertEqual(len(out), 11)
# check that the numbers of the different kind of warnings is correct # check that the numbers of the different kind of warnings is correct
for msg in [b'dw', b'iw', b'uw']: for msg in [b'dw', b'iw', b'uw']:
self.assertEqual(out.count(msg), 3) self.assertEqual(out.count(msg), 3)
for msg in [ae_msg, at_msg, b'rw']: for msg in [b'rw']:
self.assertEqual(out.count(msg), 1) self.assertEqual(out.count(msg), 1)
args_list = ( args_list = (
@ -294,11 +292,9 @@ class Test_TextTestRunner(unittest.TestCase):
**opts) **opts)
out, err = get_parse_out_err(p) out, err = get_parse_out_err(p)
self.assertIn(b'OK', err) self.assertIn(b'OK', err)
self.assertEqual(len(out), 14) self.assertEqual(len(out), 13)
for msg in [b'dw', b'iw', b'uw', b'rw']: for msg in [b'dw', b'iw', b'uw', b'rw']:
self.assertEqual(out.count(msg), 3) self.assertEqual(out.count(msg), 3)
for msg in [ae_msg, at_msg]:
self.assertEqual(out.count(msg), 1)
def testStdErrLookedUpAtInstantiationTime(self): def testStdErrLookedUpAtInstantiationTime(self):
# see issue 10786 # see issue 10786