Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(1)

Side by Side Diff: Lib/test/test_unittest.py

Issue 32080: [issue2578] additional unittest type equality methods Base URL: http://svn.python.org/view/*checkout*/python/trunk/
Patch Set: minor cleanup Created 3 years, 1 month ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 """Test script for unittest. 1 """Test script for unittest.
2 2
3 By Collin Winter <collinw at gmail.com> 3 By Collin Winter <collinw at gmail.com>
4 4
5 Still need testing: 5 Still need testing:
6 TestCase.{assert,fail}* methods (some are tested implicitly) 6 TestCase.{assert,fail}* methods (some are tested implicitly)
7 """ 7 """
8 8
9 import re
9 from test import test_support 10 from test import test_support
10 import unittest 11 import unittest
11 from unittest import TestCase 12 from unittest import TestCase
12 import types 13 import types
13 14
14 ### Support code 15 ### Support code
15 ################################################################ 16 ################################################################
16 17
17 class LoggingResult(unittest.TestResult): 18 class LoggingResult(unittest.TestResult):
18 def __init__(self, log): 19 def __init__(self, log):
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 def test_ne(self): 64 def test_ne(self):
64 for obj_1, obj_2 in self.ne_pairs: 65 for obj_1, obj_2 in self.ne_pairs:
65 self.failIfEqual(obj_1, obj_2) 66 self.failIfEqual(obj_1, obj_2)
66 self.failIfEqual(obj_2, obj_1) 67 self.failIfEqual(obj_2, obj_1)
67 68
68 class TestHashing(object): 69 class TestHashing(object):
69 # Check for a valid __hash__ implementation 70 # Check for a valid __hash__ implementation
70 def test_hash(self): 71 def test_hash(self):
71 for obj_1, obj_2 in self.eq_pairs: 72 for obj_1, obj_2 in self.eq_pairs:
72 try: 73 try:
73 assert hash(obj_1) == hash(obj_2) 74 if not hash(obj_1) == hash(obj_2):
75 self.fail("%s and %s do not hash equal" % (obj_1, obj_2))
GvR 2009/03/31 15:01:06 maybe better %r and %r ?
gregory.p.smith 2009/03/31 16:37:02 Done.
74 except KeyboardInterrupt: 76 except KeyboardInterrupt:
75 raise 77 raise
76 except AssertionError:
77 self.fail("%s and %s do not hash equal" % (obj_1, obj_2))
78 except Exception, e: 78 except Exception, e:
79 self.fail("Problem hashing %s and %s: %s" % (obj_1, obj_2, e)) 79 self.fail("Problem hashing %s and %s: %s" % (obj_1, obj_2, e))
80 80
81 for obj_1, obj_2 in self.ne_pairs: 81 for obj_1, obj_2 in self.ne_pairs:
82 try: 82 try:
83 assert hash(obj_1) != hash(obj_2) 83 if hash(obj_1) == hash(obj_2):
84 self.fail("%s and %s hash equal, but shouldn't" %
GvR 2009/03/31 15:01:06 ditto?
gregory.p.smith 2009/03/31 16:37:02 Done.
85 (obj_1, obj_2))
84 except KeyboardInterrupt: 86 except KeyboardInterrupt:
85 raise 87 raise
86 except AssertionError:
87 self.fail("%s and %s hash equal, but shouldn't" % (obj_1, obj_2) )
88 except Exception, e: 88 except Exception, e:
89 self.fail("Problem hashing %s and %s: %s" % (obj_1, obj_2, e)) 89 self.fail("Problem hashing %s and %s: %s" % (obj_1, obj_2, e))
90 90
91 91
92 # List subclass we can add attributes to. 92 # List subclass we can add attributes to.
93 class MyClassSuite(list): 93 class MyClassSuite(list):
94 94
95 def __init__(self, tests, klass): 95 def __init__(self, tests, klass):
96 super(MyClassSuite, self).__init__(tests) 96 super(MyClassSuite, self).__init__(tests)
97 97
(...skipping 2131 matching lines...) Expand 10 before | Expand all | Expand 10 after
2229 # Because of the vague nature of the docs, I'm not going to lock this 2229 # Because of the vague nature of the docs, I'm not going to lock this
2230 # test down too much. Really all that can be asserted is that the id() 2230 # test down too much. Really all that can be asserted is that the id()
2231 # will be a string (either 8-byte or unicode -- again, because the docs 2231 # will be a string (either 8-byte or unicode -- again, because the docs
2232 # just say "string") 2232 # just say "string")
2233 def test_id(self): 2233 def test_id(self):
2234 class Foo(unittest.TestCase): 2234 class Foo(unittest.TestCase):
2235 def runTest(self): 2235 def runTest(self):
2236 pass 2236 pass
2237 2237
2238 self.failUnless(isinstance(Foo().id(), basestring)) 2238 self.failUnless(isinstance(Foo().id(), basestring))
2239
2240 # "Returns a one-line description of the test, or None if no description
2241 # has been provided. The default implementation of this method returns
2242 # the first line of the test method's docstring, if available, or None."
2243 def test_shortDescription__no_docstring(self):
2244 class Foo(unittest.TestCase):
2245 def runTest(self):
2246 pass
2247
2248 self.assertEqual(Foo().shortDescription(), None)
2249
2250 # "Returns a one-line description of the test, or None if no description
2251 # has been provided. The default implementation of this method returns
2252 # the first line of the test method's docstring, if available, or None."
2253 def test_shortDescription__singleline_docstring(self):
2254 class Foo(unittest.TestCase):
2255 def runTest(self):
2256 "this tests foo"
2257 pass
2258
2259 self.assertEqual(Foo().shortDescription(), "this tests foo")
2260
2261 # "Returns a one-line description of the test, or None if no description
2262 # has been provided. The default implementation of this method returns
2263 # the first line of the test method's docstring, if available, or None."
2264 def test_shortDescription__multiline_docstring(self):
2265 class Foo(unittest.TestCase):
2266 def runTest(self):
2267 """this tests foo
2268 blah, bar and baz are also tested"""
2269 pass
2270
2271 self.assertEqual(Foo().shortDescription(), "this tests foo")
2272 2239
2273 # "If result is omitted or None, a temporary result object is created 2240 # "If result is omitted or None, a temporary result object is created
2274 # and used, but is not made available to the caller" 2241 # and used, but is not made available to the caller"
2275 def test_run__uses_defaultTestResult(self): 2242 def test_run__uses_defaultTestResult(self):
2276 events = [] 2243 events = []
2277 2244
2278 class Foo(unittest.TestCase): 2245 class Foo(unittest.TestCase):
2279 def test(self): 2246 def test(self):
2280 events.append('test') 2247 events.append('test')
2281 2248
2282 def defaultTestResult(self): 2249 def defaultTestResult(self):
2283 return LoggingResult(events) 2250 return LoggingResult(events)
2284 2251
2285 # Make run() find a result object on its own 2252 # Make run() find a result object on its own
2286 Foo('test').run() 2253 Foo('test').run()
2287 2254
2288 expected = ['startTest', 'test', 'addSuccess', 'stopTest'] 2255 expected = ['startTest', 'test', 'addSuccess', 'stopTest']
2289 self.assertEqual(events, expected) 2256 self.assertEqual(events, expected)
2290 2257
2258 def testShortDescriptionWithoutDocstring(self):
2259 self.assertEqual(
2260 self.shortDescription(),
2261 'testShortDescriptionWithoutDocstring (' + __name__ +
2262 '.Test_TestCase)')
2263
2264 def testShortDescriptionWithOneLineDocstring(self):
2265 """Tests shortDescription() for a method with a docstring."""
2266 self.assertEqual(
2267 self.shortDescription(),
2268 ('testShortDescriptionWithOneLineDocstring '
2269 '(' + __name__ + '.Test_TestCase)\n'
2270 'Tests shortDescription() for a method with a docstring.'))
2271
2272 def testShortDescriptionWithMultiLineDocstring(self):
2273 """Tests shortDescription() for a method with a longer docstring.
2274
2275 This method ensures that only the first line of a docstring is
2276 returned used in the short description, no matter how long the
2277 whole thing is.
2278 """
2279 self.assertEqual(
2280 self.shortDescription(),
2281 ('testShortDescriptionWithMultiLineDocstring '
2282 '(' + __name__ + '.Test_TestCase)\n'
2283 'Tests shortDescription() for a method with a longer '
2284 'docstring.'))
2285
2286
2287 def testAddTypeEqualityFunc(self):
2288 class SadSnake(object):
2289 """Dummy class for test_addTypeEqualityFunc."""
2290 s1, s2 = SadSnake(), SadSnake()
2291 self.assertFalse(s1 == s2)
2292 def AllSnakesCreatedEqual(a, b, msg=None):
2293 return type(a) == type(b) == SadSnake
2294 self.addTypeEqualityFunc(SadSnake, AllSnakesCreatedEqual)
2295 self.assertEqual(s1, s2)
2296 # No this doesn't clean up and remove the SadSnake equality func
2297 # from this TestCase instance but since its a local nothing else
2298 # will ever notice that.
2299
2300 def testAssertIn(self):
2301 animals = {'monkey': 'banana', 'cow': 'grass', 'seal': 'fish'}
2302
2303 self.assertIn('a', 'abc')
2304 self.assertIn(2, [1, 2, 3])
2305 self.assertIn('monkey', animals)
2306
2307 self.assertNotIn('d', 'abc')
2308 self.assertNotIn(0, [1, 2, 3])
2309 self.assertNotIn('otter', animals)
2310
2311 self.assertRaises(self.failureException, self.assertIn, 'x', 'abc')
2312 self.assertRaises(self.failureException, self.assertIn, 4, [1, 2, 3])
2313 self.assertRaises(self.failureException, self.assertIn, 'elephant', anim als)
GvR 2009/03/31 15:01:06 lin too long
gregory.p.smith 2009/03/31 16:37:02 Done.
2314
2315 self.assertRaises(self.failureException, self.assertNotIn, 'c', 'abc')
2316 self.assertRaises(self.failureException, self.assertNotIn, 1, [1, 2, 3])
2317 self.assertRaises(self.failureException, self.assertNotIn, 'cow', animal s)
GvR 2009/03/31 15:01:06 linr too long
gregory.p.smith 2009/03/31 16:37:02 Done.
2318
2319 def testAssertDictContainsSubset(self):
2320 self.assertDictContainsSubset({}, {})
2321 self.assertDictContainsSubset({}, {'a': 1})
2322 self.assertDictContainsSubset({'a': 1}, {'a': 1})
2323 self.assertDictContainsSubset({'a': 1}, {'a': 1, 'b': 2})
2324 self.assertDictContainsSubset({'a': 1, 'b': 2}, {'a': 1, 'b': 2})
2325
2326 self.assertRaises(unittest.TestCase.failureException,
2327 self.assertDictContainsSubset, {'a': 2}, {'a': 1},
2328 '.*Mismatched values:.*')
2329
2330 self.assertRaises(unittest.TestCase.failureException,
2331 self.assertDictContainsSubset, {'c': 1}, {'a': 1},
2332 '.*Missing:.*')
2333
2334 self.assertRaises(unittest.TestCase.failureException,
2335 self.assertDictContainsSubset, {'a': 1, 'c': 1},
2336 {'a': 1}, '.*Missing:.*')
2337
2338 self.assertRaises(unittest.TestCase.failureException,
2339 self.assertDictContainsSubset, {'a': 1, 'c': 1},
2340 {'a': 1}, '.*Missing:.*Mismatched values:.*')
2341
2342 def testAssertEqual(self):
2343 equal_pairs = [
2344 ((), ()),
2345 ({}, {}),
2346 ([], []),
2347 (set(), set()),
2348 (frozenset(), frozenset())]
2349 for a, b in equal_pairs:
2350 # This mess of try excepts is to test the assertEqual behavior
2351 # itself.
2352 try:
2353 self.assertEqual(a, b)
2354 except self.failureException:
2355 self.fail('assertEqual(%r, %r) failed' % (a, b))
2356 try:
2357 self.assertEqual(a, b, msg='foo')
2358 except self.failureException:
2359 self.fail('assertEqual(%r, %r) with msg= failed' % (a, b))
2360 try:
2361 self.assertEqual(a, b, 'foo')
2362 except self.failureException:
2363 self.fail('assertEqual(%r, %r) with third parameter failed' %
2364 (a, b))
2365
2366 unequal_pairs = [
2367 ((), []),
2368 ({}, set()),
2369 (set([4,1]), frozenset([4,2])),
2370 (frozenset([4,5]), set([2,3])),
2371 (set([3,4]), set([5,4]))]
2372 for a, b in unequal_pairs:
2373 self.assertRaises(self.failureException, self.assertEqual, a, b)
2374 self.assertRaises(self.failureException, self.assertEqual, a, b,
2375 'foo')
2376 self.assertRaises(self.failureException, self.assertEqual, a, b,
2377 msg='foo')
2378
2379 def testEquality(self):
2380 self.assertListEquals([], [])
2381 self.assertTupleEquals((), ())
2382 self.assertSequenceEquals([], ())
2383
2384 a = [0, 'a', []]
2385 b = []
2386 self.assertRaises(unittest.TestCase.failureException,
2387 self.assertListEquals, a, b)
2388 self.assertRaises(unittest.TestCase.failureException,
2389 self.assertListEquals, tuple(a), tuple(b))
2390 self.assertRaises(unittest.TestCase.failureException,
2391 self.assertSequenceEquals, a, tuple(b))
2392
2393 b.extend(a)
2394 self.assertListEquals(a, b)
2395 self.assertTupleEquals(tuple(a), tuple(b))
2396 self.assertSequenceEquals(a, tuple(b))
2397 self.assertSequenceEquals(tuple(a), b)
2398
2399 self.assertRaises(self.failureException, self.assertListEquals,
2400 a, tuple(b))
2401 self.assertRaises(self.failureException, self.assertTupleEquals,
2402 tuple(a), b)
2403 self.assertRaises(self.failureException, self.assertListEquals, None, b)
2404 self.assertRaises(self.failureException, self.assertTupleEquals, None,
2405 tuple(b))
2406 self.assertRaises(self.failureException, self.assertSequenceEquals,
2407 None, tuple(b))
2408 self.assertRaises(self.failureException, self.assertListEquals, 1, 1)
2409 self.assertRaises(self.failureException, self.assertTupleEquals, 1, 1)
2410 self.assertRaises(self.failureException, self.assertSequenceEquals,
2411 1, 1)
2412
2413 self.assertDictEquals({}, {})
2414
2415 c = { 'x': 1 }
2416 d = {}
2417 self.assertRaises(unittest.TestCase.failureException,
2418 self.assertDictEquals, c, d)
2419
2420 d.update(c)
2421 self.assertDictEquals(c, d)
2422
2423 d['x'] = 0
2424 self.assertRaises(unittest.TestCase.failureException,
2425 self.assertDictEquals, c, d, 'These are unequal')
2426
2427 self.assertRaises(self.failureException, self.assertDictEquals, None, d)
2428 self.assertRaises(self.failureException, self.assertDictEquals, [], d)
2429 self.assertRaises(self.failureException, self.assertDictEquals, 1, 1)
2430
2431 self.assertSameElements([1, 2, 3], [3, 2, 1])
2432 self.assertSameElements([1, 2] + [3] * 100, [1] * 100 + [2, 3])
2433 self.assertSameElements(['foo', 'bar', 'baz'], ['bar', 'baz', 'foo'])
2434 self.assertRaises(self.failureException, self.assertSameElements,
2435 [10], [10, 11])
2436 self.assertRaises(self.failureException, self.assertSameElements,
2437 [10, 11], [10])
2438
2439 # Test that sequences of unhashable objects can be tested for sameness:
2440 self.assertSameElements([[1, 2], [3, 4]], [[3, 4], [1, 2]])
2441 self.assertSameElements([{'a': 1}, {'b': 2}], [{'b': 2}, {'a': 1}])
2442 self.assertRaises(self.failureException, self.assertSameElements,
2443 [[1]], [[2]])
2444
2445 def testAssertSetEquals(self):
2446 set1 = set()
2447 set2 = set()
2448 self.assertSetEquals(set1, set2)
2449
2450 self.assertRaises(self.failureException, self.assertSetEquals, None, set 2)
2451 self.assertRaises(self.failureException, self.assertSetEquals, [], set2)
2452 self.assertRaises(self.failureException, self.assertSetEquals, set1, Non e)
2453 self.assertRaises(self.failureException, self.assertSetEquals, set1, [])
2454
2455 set1 = set(['a'])
2456 set2 = set()
2457 self.assertRaises(self.failureException, self.assertSetEquals, set1, set 2)
2458
2459 set1 = set(['a'])
2460 set2 = set(['a'])
2461 self.assertSetEquals(set1, set2)
2462
2463 set1 = set(['a'])
2464 set2 = set(['a', 'b'])
2465 self.assertRaises(self.failureException, self.assertSetEquals, set1, set 2)
2466
2467 set1 = set(['a'])
2468 set2 = frozenset(['a', 'b'])
2469 self.assertRaises(self.failureException, self.assertSetEquals, set1, set 2)
2470
2471 set1 = set(['a', 'b'])
2472 set2 = frozenset(['a', 'b'])
2473 self.assertSetEquals(set1, set2)
2474
2475 set1 = set()
2476 set2 = "foo"
2477 self.assertRaises(self.failureException, self.assertSetEquals, set1, set 2)
2478 self.assertRaises(self.failureException, self.assertSetEquals, set2, set 1)
2479
2480 # make sure any string formatting is tuple-safe
2481 set1 = set([(0, 1), (2, 3)])
2482 set2 = set([(4, 5)])
2483 self.assertRaises(self.failureException, self.assertSetEquals, set1, set 2)
2484
2485 def testInequality(self):
2486 # Try ints
2487 self.assertGreater(2, 1)
2488 self.assertGreaterEqual(2, 1)
2489 self.assertGreaterEqual(1, 1)
2490 self.assertLess(1, 2)
2491 self.assertLessEqual(1, 2)
2492 self.assertLessEqual(1, 1)
2493 self.assertRaises(self.failureException, self.assertGreater, 1, 2)
2494 self.assertRaises(self.failureException, self.assertGreater, 1, 1)
2495 self.assertRaises(self.failureException, self.assertGreaterEqual, 1, 2)
2496 self.assertRaises(self.failureException, self.assertLess, 2, 1)
2497 self.assertRaises(self.failureException, self.assertLess, 1, 1)
2498 self.assertRaises(self.failureException, self.assertLessEqual, 2, 1)
2499
2500 # Try Floats
2501 self.assertGreater(1.1, 1.0)
2502 self.assertGreaterEqual(1.1, 1.0)
2503 self.assertGreaterEqual(1.0, 1.0)
2504 self.assertLess(1.0, 1.1)
2505 self.assertLessEqual(1.0, 1.1)
2506 self.assertLessEqual(1.0, 1.0)
2507 self.assertRaises(self.failureException, self.assertGreater, 1.0, 1.1)
2508 self.assertRaises(self.failureException, self.assertGreater, 1.0, 1.0)
2509 self.assertRaises(self.failureException, self.assertGreaterEqual, 1.0, 1 .1)
2510 self.assertRaises(self.failureException, self.assertLess, 1.1, 1.0)
2511 self.assertRaises(self.failureException, self.assertLess, 1.0, 1.0)
2512 self.assertRaises(self.failureException, self.assertLessEqual, 1.1, 1.0)
2513
2514 # Try Strings
2515 self.assertGreater('bug', 'ant')
2516 self.assertGreaterEqual('bug', 'ant')
2517 self.assertGreaterEqual('ant', 'ant')
2518 self.assertLess('ant', 'bug')
2519 self.assertLessEqual('ant', 'bug')
2520 self.assertLessEqual('ant', 'ant')
2521 self.assertRaises(self.failureException, self.assertGreater, 'ant', 'bug ')
2522 self.assertRaises(self.failureException, self.assertGreater, 'ant', 'ant ')
2523 self.assertRaises(self.failureException, self.assertGreaterEqual, 'ant', 'bug')
2524 self.assertRaises(self.failureException, self.assertLess, 'bug', 'ant')
2525 self.assertRaises(self.failureException, self.assertLess, 'ant', 'ant')
2526 self.assertRaises(self.failureException, self.assertLessEqual, 'bug', 'a nt')
2527
2528 # Try Unicode
2529 self.assertGreater(u'bug', u'ant')
2530 self.assertGreaterEqual(u'bug', u'ant')
2531 self.assertGreaterEqual(u'ant', u'ant')
2532 self.assertLess(u'ant', u'bug')
2533 self.assertLessEqual(u'ant', u'bug')
2534 self.assertLessEqual(u'ant', u'ant')
2535 self.assertRaises(self.failureException, self.assertGreater, u'ant', u'b ug')
2536 self.assertRaises(self.failureException, self.assertGreater, u'ant', u'a nt')
2537 self.assertRaises(self.failureException, self.assertGreaterEqual, u'ant' ,
2538 u'bug')
2539 self.assertRaises(self.failureException, self.assertLess, u'bug', u'ant' )
2540 self.assertRaises(self.failureException, self.assertLess, u'ant', u'ant' )
2541 self.assertRaises(self.failureException, self.assertLessEqual, u'bug', u 'ant')
2542
2543 # Try Mixed String/Unicode
2544 self.assertGreater('bug', u'ant')
2545 self.assertGreater(u'bug', 'ant')
2546 self.assertGreaterEqual('bug', u'ant')
2547 self.assertGreaterEqual(u'bug', 'ant')
2548 self.assertGreaterEqual('ant', u'ant')
2549 self.assertGreaterEqual(u'ant', 'ant')
2550 self.assertLess('ant', u'bug')
2551 self.assertLess(u'ant', 'bug')
2552 self.assertLessEqual('ant', u'bug')
2553 self.assertLessEqual(u'ant', 'bug')
2554 self.assertLessEqual('ant', u'ant')
2555 self.assertLessEqual(u'ant', 'ant')
2556 self.assertRaises(self.failureException, self.assertGreater, 'ant', u'bu g')
2557 self.assertRaises(self.failureException, self.assertGreater, u'ant', 'bu g')
2558 self.assertRaises(self.failureException, self.assertGreater, 'ant', u'an t')
2559 self.assertRaises(self.failureException, self.assertGreater, u'ant', 'an t')
2560 self.assertRaises(self.failureException, self.assertGreaterEqual, 'ant',
2561 u'bug')
2562 self.assertRaises(self.failureException, self.assertGreaterEqual, u'ant' ,
2563 'bug')
2564 self.assertRaises(self.failureException, self.assertLess, 'bug', u'ant')
2565 self.assertRaises(self.failureException, self.assertLess, u'bug', 'ant')
2566 self.assertRaises(self.failureException, self.assertLess, 'ant', u'ant')
2567 self.assertRaises(self.failureException, self.assertLess, u'ant', 'ant')
2568 self.assertRaises(self.failureException, self.assertLessEqual, 'bug', u' ant')
2569 self.assertRaises(self.failureException, self.assertLessEqual, u'bug', ' ant')
2570
2571 def testAssertMultiLineEquals(self):
2572 sample_text = b"""\
2573 http://www.python.org/doc/2.3/lib/module-unittest.html
2574 test case
2575 A test case is the smallest unit of testing. [...]
2576 """
2577 revised_sample_text = b"""\
2578 http://www.python.org/doc/2.4.1/lib/module-unittest.html
2579 test case
2580 A test case is the smallest unit of testing. [...] You may provide your
2581 own implementation that does not subclass from TestCase, of course.
2582 """
2583 sample_text_error = b"""
2584 - http://www.python.org/doc/2.3/lib/module-unittest.html
2585 ? ^
2586 + http://www.python.org/doc/2.4.1/lib/module-unittest.html
2587 ? ^^^
2588 test case
2589 - A test case is the smallest unit of testing. [...]
2590 + A test case is the smallest unit of testing. [...] You may provide your
2591 ? +++++++++++++++++++++
2592 + own implementation that does not subclass from TestCase, of course.
2593 """
2594
2595 for modifier in (lambda x: x, lambda x: x.decode('utf8')):
2596 try:
2597 self.assertMultiLineEquals(modifier(sample_text),
2598 modifier(revised_sample_text))
2599 except self.failureException, e:
2600 # no fair testing ourself with ourself, use assertEqual..
2601 self.assertEqual(sample_text_error, str(e).encode('utf8'))
2602
2603 def testAssertIsNone(self):
2604 self.assertIsNone(None)
2605 self.assertRaises(self.failureException, self.assertIsNone, False)
2606 self.assertIsNotNone('DjZoPloGears on Rails')
2607 self.assertRaises(self.failureException, self.assertIsNotNone, None)
2608
2609 def testAssertRegexpMatches(self):
2610 self.assertRegexpMatches('asdfabasdf', r'ab+')
2611 self.assertRaises(self.failureException, self.assertRegexpMatches,
2612 'saaas', r'aaaa')
2613
2614 def testAssertRaisesRegexp(self):
2615 class ExceptionMock(Exception):
2616 pass
2617
2618 def Stub():
2619 raise ExceptionMock('We expect')
2620
2621 self.assertRaisesRegexp(ExceptionMock, re.compile('expect$'), Stub)
2622 self.assertRaisesRegexp(ExceptionMock, 'expect$', Stub)
2623 self.assertRaisesRegexp(ExceptionMock, u'expect$', Stub)
2624
2625 def testAssertNotRaisesRegexp(self):
2626 self.assertRaisesRegexp(
2627 self.failureException, '^Exception not raised$',
2628 self.assertRaisesRegexp, Exception, re.compile('x'),
2629 lambda: None)
2630 self.assertRaisesRegexp(
2631 self.failureException, '^Exception not raised$',
2632 self.assertRaisesRegexp, Exception, 'x',
2633 lambda: None)
2634 self.assertRaisesRegexp(
2635 self.failureException, '^Exception not raised$',
2636 self.assertRaisesRegexp, Exception, u'x',
2637 lambda: None)
2638
2639 def testAssertRaisesRegexpMismatch(self):
2640 def Stub():
2641 raise Exception('Unexpected')
2642
2643 self.assertRaisesRegexp(
2644 self.failureException,
2645 r'"\^Expected\$" does not match "Unexpected"',
2646 self.assertRaisesRegexp, Exception, '^Expected$',
2647 Stub)
2648 self.assertRaisesRegexp(
2649 self.failureException,
2650 r'"\^Expected\$" does not match "Unexpected"',
2651 self.assertRaisesRegexp, Exception, u'^Expected$',
2652 Stub)
2653 self.assertRaisesRegexp(
2654 self.failureException,
2655 r'"\^Expected\$" does not match "Unexpected"',
2656 self.assertRaisesRegexp, Exception,
2657 re.compile('^Expected$'), Stub)
2658
2291 2659
2292 class Test_TestSkipping(TestCase): 2660 class Test_TestSkipping(TestCase):
2293 2661
2294 def test_skipping(self): 2662 def test_skipping(self):
2295 class Foo(unittest.TestCase): 2663 class Foo(unittest.TestCase):
2296 def test_skip_me(self): 2664 def test_skip_me(self):
2297 self.skipTest("skip") 2665 self.skipTest("skip")
2298 events = [] 2666 events = []
2299 result = LoggingResult(events) 2667 result = LoggingResult(events)
2300 test = Foo("test_skip_me") 2668 test = Foo("test_skip_me")
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
2379 self.assertFalse(result.failures) 2747 self.assertFalse(result.failures)
2380 self.assertEqual(result.unexpectedSuccesses, [test]) 2748 self.assertEqual(result.unexpectedSuccesses, [test])
2381 self.assertTrue(result.wasSuccessful()) 2749 self.assertTrue(result.wasSuccessful())
2382 2750
2383 2751
2384 2752
2385 class Test_Assertions(TestCase): 2753 class Test_Assertions(TestCase):
2386 def test_AlmostEqual(self): 2754 def test_AlmostEqual(self):
2387 self.failUnlessAlmostEqual(1.00000001, 1.0) 2755 self.failUnlessAlmostEqual(1.00000001, 1.0)
2388 self.failIfAlmostEqual(1.0000001, 1.0) 2756 self.failIfAlmostEqual(1.0000001, 1.0)
2389 self.assertRaises(AssertionError, 2757 self.assertRaises(self.failureException,
2390 self.failUnlessAlmostEqual, 1.0000001, 1.0) 2758 self.failUnlessAlmostEqual, 1.0000001, 1.0)
2391 self.assertRaises(AssertionError, 2759 self.assertRaises(self.failureException,
2392 self.failIfAlmostEqual, 1.00000001, 1.0) 2760 self.failIfAlmostEqual, 1.00000001, 1.0)
2393 2761
2394 self.failUnlessAlmostEqual(1.1, 1.0, places=0) 2762 self.failUnlessAlmostEqual(1.1, 1.0, places=0)
2395 self.assertRaises(AssertionError, 2763 self.assertRaises(self.failureException,
2396 self.failUnlessAlmostEqual, 1.1, 1.0, places=1) 2764 self.failUnlessAlmostEqual, 1.1, 1.0, places=1)
2397 2765
2398 self.failUnlessAlmostEqual(0, .1+.1j, places=0) 2766 self.failUnlessAlmostEqual(0, .1+.1j, places=0)
2399 self.failIfAlmostEqual(0, .1+.1j, places=1) 2767 self.failIfAlmostEqual(0, .1+.1j, places=1)
2400 self.assertRaises(AssertionError, 2768 self.assertRaises(self.failureException,
2401 self.failUnlessAlmostEqual, 0, .1+.1j, places=1) 2769 self.failUnlessAlmostEqual, 0, .1+.1j, places=1)
2402 self.assertRaises(AssertionError, 2770 self.assertRaises(self.failureException,
2403 self.failIfAlmostEqual, 0, .1+.1j, places=0) 2771 self.failIfAlmostEqual, 0, .1+.1j, places=0)
2404 2772
2405 def test_assertRaises(self): 2773 def test_assertRaises(self):
2406 def _raise(e): 2774 def _raise(e):
2407 raise e 2775 raise e
2408 self.assertRaises(KeyError, _raise, KeyError) 2776 self.assertRaises(KeyError, _raise, KeyError)
2409 self.assertRaises(KeyError, _raise, KeyError("key")) 2777 self.assertRaises(KeyError, _raise, KeyError("key"))
2410 try: 2778 try:
2411 self.assertRaises(KeyError, lambda: None) 2779 self.assertRaises(KeyError, lambda: None)
2412 except AssertionError as e: 2780 except self.failureException as e:
2413 self.assert_("KeyError not raised" in e, str(e)) 2781 self.assert_("KeyError not raised" in e, str(e))
2414 else: 2782 else:
2415 self.fail("assertRaises() didn't fail") 2783 self.fail("assertRaises() didn't fail")
2416 try: 2784 try:
2417 self.assertRaises(KeyError, _raise, ValueError) 2785 self.assertRaises(KeyError, _raise, ValueError)
2418 except ValueError: 2786 except ValueError:
2419 pass 2787 pass
2420 else: 2788 else:
2421 self.fail("assertRaises() didn't let exception pass through") 2789 self.fail("assertRaises() didn't let exception pass through")
2422 with self.assertRaises(KeyError): 2790 with self.assertRaises(KeyError):
2423 raise KeyError 2791 raise KeyError
2424 with self.assertRaises(KeyError): 2792 with self.assertRaises(KeyError):
2425 raise KeyError("key") 2793 raise KeyError("key")
2426 try: 2794 try:
2427 with self.assertRaises(KeyError): 2795 with self.assertRaises(KeyError):
2428 pass 2796 pass
2429 except AssertionError as e: 2797 except self.failureException as e:
2430 self.assert_("KeyError not raised" in e, str(e)) 2798 self.assert_("KeyError not raised" in e, str(e))
2431 else: 2799 else:
2432 self.fail("assertRaises() didn't fail") 2800 self.fail("assertRaises() didn't fail")
2433 try: 2801 try:
2434 with self.assertRaises(KeyError): 2802 with self.assertRaises(KeyError):
2435 raise ValueError 2803 raise ValueError
2436 except ValueError: 2804 except ValueError:
2437 pass 2805 pass
2438 else: 2806 else:
2439 self.fail("assertRaises() didn't let exception pass through") 2807 self.fail("assertRaises() didn't let exception pass through")
2440 2808
2441 2809
2442 ###################################################################### 2810 ######################################################################
2443 ## Main 2811 ## Main
2444 ###################################################################### 2812 ######################################################################
2445 2813
2446 def test_main(): 2814 def test_main():
2447 test_support.run_unittest(Test_TestCase, Test_TestLoader, 2815 test_support.run_unittest(Test_TestCase, Test_TestLoader,
2448 Test_TestSuite, Test_TestResult, Test_FunctionTestCase, 2816 Test_TestSuite, Test_TestResult, Test_FunctionTestCase,
2449 Test_TestSkipping, Test_Assertions) 2817 Test_TestSkipping, Test_Assertions)
2450 2818
2451 if __name__ == "__main__": 2819 if __name__ == "__main__":
2452 test_main() 2820 test_main()
OLDNEW

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld 855:fffdfa546f68