diff --git a/tests/i18n/tests.py b/tests/i18n/tests.py
index 2cbf18f573..57adaae6a9 100644
--- a/tests/i18n/tests.py
+++ b/tests/i18n/tests.py
@@ -1098,45 +1098,42 @@ class MiscTests(SimpleTestCase):
         values according to the spec (and that we extract all the pieces in
         the right order).
         """
-        p = trans_real.parse_accept_lang_header
-        # Good headers.
-        self.assertEqual([('de', 1.0)], p('de'))
-        self.assertEqual([('en-au', 1.0)], p('en-AU'))
-        self.assertEqual([('es-419', 1.0)], p('es-419'))
-        self.assertEqual([('*', 1.0)], p('*;q=1.00'))
-        self.assertEqual([('en-au', 0.123)], p('en-AU;q=0.123'))
-        self.assertEqual([('en-au', 0.5)], p('en-au;q=0.5'))
-        self.assertEqual([('en-au', 1.0)], p('en-au;q=1.0'))
-        self.assertEqual([('da', 1.0), ('en', 0.5), ('en-gb', 0.25)], p('da, en-gb;q=0.25, en;q=0.5'))
-        self.assertEqual([('en-au-xx', 1.0)], p('en-au-xx'))
-        self.assertEqual(
-            [('de', 1.0), ('en-au', 0.75), ('en-us', 0.5), ('en', 0.25), ('es', 0.125), ('fa', 0.125)],
-            p('de,en-au;q=0.75,en-us;q=0.5,en;q=0.25,es;q=0.125,fa;q=0.125')
-        )
-        self.assertEqual([('*', 1.0)], p('*'))
-        self.assertEqual([('de', 0.0)], p('de;q=0.'))
-        self.assertEqual([('en', 1.0), ('*', 0.5)], p('en; q=1.0, * ; q=0.5'))
-        self.assertEqual([('en', 1.0)], p('en; q=1,'))
-        self.assertEqual([], p(''))
-
-        # Bad headers; should always return [].
-        self.assertEqual([], p('en-gb;q=1.0000'))
-        self.assertEqual([], p('en;q=0.1234'))
-        self.assertEqual([], p('en;q=.2'))
-        self.assertEqual([], p('abcdefghi-au'))
-        self.assertEqual([], p('**'))
-        self.assertEqual([], p('en,,gb'))
-        self.assertEqual([], p('en-au;q=0.1.0'))
-        self.assertEqual(
-            [],
-            p('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXZ,en')
-        )
-        self.assertEqual([], p('da, en-gb;q=0.8, en;q=0.7,#'))
-        self.assertEqual([], p('de;q=2.0'))
-        self.assertEqual([], p('de;q=0.a'))
-        self.assertEqual([], p('12-345'))
-        self.assertEqual([], p(''))
-        self.assertEqual([], p('en;q=1e0'))
+        tests = [
+            # Good headers
+            ('de', [('de', 1.0)]),
+            ('en-AU', [('en-au', 1.0)]),
+            ('es-419', [('es-419', 1.0)]),
+            ('*;q=1.00', [('*', 1.0)]),
+            ('en-AU;q=0.123', [('en-au', 0.123)]),
+            ('en-au;q=0.5', [('en-au', 0.5)]),
+            ('en-au;q=1.0', [('en-au', 1.0)]),
+            ('da, en-gb;q=0.25, en;q=0.5', [('da', 1.0), ('en', 0.5), ('en-gb', 0.25)]),
+            ('en-au-xx', [('en-au-xx', 1.0)]),
+            ('de,en-au;q=0.75,en-us;q=0.5,en;q=0.25,es;q=0.125,fa;q=0.125',
+             [('de', 1.0), ('en-au', 0.75), ('en-us', 0.5), ('en', 0.25), ('es', 0.125), ('fa', 0.125)]),
+            ('*', [('*', 1.0)]),
+            ('de;q=0.', [('de', 0.0)]),
+            ('en; q=1,', [('en', 1.0)]),
+            ('en; q=1.0, * ; q=0.5', [('en', 1.0), ('*', 0.5)]),
+            # Bad headers
+            ('en-gb;q=1.0000', []),
+            ('en;q=0.1234', [], ),
+            ('en;q=.2', []),
+            ('abcdefghi-au', []),
+            ('**', []),
+            ('en,,gb', []),
+            ('en-au;q=0.1.0', []),
+            (('X' * 97) + 'Z,en', []),
+            ('da, en-gb;q=0.8, en;q=0.7,#', []),
+            ('de;q=2.0', []),
+            ('de;q=0.a', []),
+            ('12-345', []),
+            ('', []),
+            ('en;q=1e0', []),
+        ]
+        for value, expected in tests:
+            with self.subTest(value=value):
+                self.assertEqual(trans_real.parse_accept_lang_header(value), expected)
 
     def test_parse_literal_http_header(self):
         """