Browse Source

Refs #28574 -- Added test for XML format output to Queryset.explain().

Wu Haotian 3 years ago
parent
commit
b3b04ad211
1 changed files with 8 additions and 0 deletions
  1. 8 0
      tests/queries/test_explain.py

+ 8 - 0
tests/queries/test_explain.py

@@ -1,4 +1,5 @@
 import unittest
+import xml.etree.ElementTree
 
 from django.db import NotSupportedError, connection, transaction
 from django.db.models import Count
@@ -31,6 +32,13 @@ class ExplainTests(TestCase):
                         self.assertTrue(captured_queries[0]['sql'].startswith(connection.ops.explain_prefix))
                         self.assertIsInstance(result, str)
                         self.assertTrue(result)
+                        if format == 'xml':
+                            try:
+                                xml.etree.ElementTree.fromstring(result)
+                            except xml.etree.ElementTree.ParseError as e:
+                                self.fail(
+                                    f'QuerySet.explain() result is not valid XML: {e}'
+                                )
 
     @skipUnlessDBFeature('validates_explain_options')
     def test_unknown_options(self):