Jelajahi Sumber

Refs #34657 -- Made msg_prefix handling in assertURLEqual()/assertInHTML consistent with other assertions.

Co-authored-by: Chinmoy Chakraborty <chinmoy12c@gmail.com>
Mariusz Felisiak 1 tahun lalu
induk
melakukan
679212a47a
3 mengubah file dengan 31 tambahan dan 1 penghapusan
  1. 4 0
      django/test/testcases.py
  2. 4 0
      docs/releases/5.1.txt
  3. 23 1
      tests/test_utils/tests.py

+ 4 - 0
django/test/testcases.py

@@ -463,6 +463,8 @@ class SimpleTestCase(unittest.TestCase):
                 (scheme, netloc, path, params, urlencode(query_parts), fragment)
             )
 
+        if msg_prefix:
+            msg_prefix += ": "
         self.assertEqual(
             normalize(url1),
             normalize(url2),
@@ -880,6 +882,8 @@ class SimpleTestCase(unittest.TestCase):
             self, haystack, None, "Second argument is not valid HTML:"
         )
         real_count = parsed_haystack.count(parsed_needle)
+        if msg_prefix:
+            msg_prefix += ": "
         if count is not None:
             self.assertEqual(
                 real_count,

+ 4 - 0
docs/releases/5.1.txt

@@ -254,6 +254,10 @@ Miscellaneous
 * In order to improve accessibility, the admin's changelist filter is now
   rendered in a ``<nav>`` tag instead of a ``<div>``.
 
+* :meth:`.SimpleTestCase.assertURLEqual` and
+  :meth:`~django.test.SimpleTestCase.assertInHTML` now add ``": "`` to the
+  ``msg_prefix``. This is consistent with the behavior of other assertions.
+
 .. _deprecated-features-5.1:
 
 Features deprecated in 5.1

+ 23 - 1
tests/test_utils/tests.py

@@ -989,6 +989,28 @@ class InHTMLTests(SimpleTestCase):
         with self.assertRaisesMessage(AssertionError, msg):
             self.assertInHTML("<b>Hello</b>", "<p>Test</p>")
 
+    def test_msg_prefix(self):
+        msg = "False is not true : Prefix: Couldn't find '<b>Hello</b>' in response"
+        with self.assertRaisesMessage(AssertionError, msg):
+            self.assertInHTML(
+                "<b>Hello</b>",
+                '<input type="text" name="Hello" />',
+                msg_prefix="Prefix",
+            )
+
+    def test_count_msg_prefix(self):
+        msg = (
+            "2 != 1 : Prefix: Found 2 instances of '<b>Hello</b>' in response "
+            "(expected 1)"
+        )
+        with self.assertRaisesMessage(AssertionError, msg):
+            self.assertInHTML(
+                "<b>Hello</b>",
+                "<b>Hello</b><b>Hello</b>",
+                count=1,
+                msg_prefix="Prefix",
+            )
+
 
 class JSONEqualTests(SimpleTestCase):
     def test_simple_equal(self):
@@ -1268,7 +1290,7 @@ class AssertURLEqualTests(SimpleTestCase):
             self.assertURLEqual(
                 "http://example.com/?x=1&x=2",
                 "https://example.com/?x=2&x=1",
-                msg_prefix="Prefix: ",
+                msg_prefix="Prefix",
             )