Issue 8351. Suppress large diffs in unittest.TestCase.assertSequenceEqual.

This commit is contained in:
Michael Foord 2010-06-05 11:23:51 +00:00
parent 9ef5d33084
commit 0100702b9a
2 changed files with 29 additions and 3 deletions

View file

@ -1,3 +1,5 @@
import difflib
import pprint
import re
import sys
@ -588,6 +590,23 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing):
self.assertRaises(self.failureException, self.assertDictEqual, [], d)
self.assertRaises(self.failureException, self.assertDictEqual, 1, 1)
def testAssertSequenceEqualMaxDiff(self):
seq1 = 'a' + 'x' * 80**2
seq2 = 'b' + 'x' * 80**2
diff = '\n'.join(difflib.ndiff(pprint.pformat(seq1).splitlines(),
pprint.pformat(seq2).splitlines()))
try:
self.assertSequenceEqual(seq1, seq2, max_diff=len(diff)/2)
except AssertionError as e:
msg = e.args[0]
self.assertTrue(len(msg) < len(diff))
try:
self.assertSequenceEqual(seq1, seq2, max_diff=len(diff)*2)
except AssertionError as e:
msg = e.args[0]
self.assertTrue(len(msg) > len(diff))
def testAssertItemsEqual(self):
a = object()
self.assertItemsEqual([1, 2, 3], [3, 2, 1])