1
0
mirror of https://github.com/django/django.git synced 2025-06-24 04:49:11 +00:00

Refs #36380 -- Replaced mocked logging assertions in tests/backends/tests.py.

This commit is contained in:
Natalia 2025-05-28 14:55:33 -03:00 committed by nessita
parent 1a03a984ab
commit d6e0c71017

View File

@ -1,10 +1,10 @@
"""Tests related to django.db.backends that haven't been organized.""" """Tests related to django.db.backends that haven't been organized."""
import datetime import datetime
import logging
import threading import threading
import unittest import unittest
import warnings import warnings
from unittest import mock
from django.core.management.color import no_style from django.core.management.color import no_style
from django.db import ( from django.db import (
@ -572,23 +572,39 @@ class BackendTestCase(TransactionTestCase):
BaseDatabaseWrapper.queries_limit = old_queries_limit BaseDatabaseWrapper.queries_limit = old_queries_limit
new_connection.close() new_connection.close()
@mock.patch("django.db.backends.utils.logger")
@override_settings(DEBUG=True) @override_settings(DEBUG=True)
def test_queries_logger(self, mocked_logger): def test_queries_logger(self):
sql = "select 1" + connection.features.bare_select_suffix sql = "select 1" + connection.features.bare_select_suffix
with connection.cursor() as cursor: with (
connection.cursor() as cursor,
self.assertLogs("django.db.backends", "DEBUG") as handler,
):
cursor.execute(sql) cursor.execute(sql)
params, kwargs = mocked_logger.debug.call_args self.assertGreaterEqual(
self.assertIn("; alias=%s", params[0]) records_len := len(handler.records),
self.assertEqual(params[2], sql) 1,
self.assertNotEqual(params[2], connection.ops.format_debug_sql(sql)) f"Wrong number of calls for {handler=} in (expected at least 1, got "
self.assertIsNone(params[3]) f"{records_len}).",
self.assertEqual(params[4], connection.alias)
self.assertEqual(
list(kwargs["extra"]),
["duration", "sql", "params", "alias"],
) )
self.assertEqual(tuple(kwargs["extra"].values()), params[1:]) record = handler.records[-1]
# Log raw message, effective level and args are correct.
self.assertEqual(record.msg, "(%.3f) %s; args=%s; alias=%s")
self.assertEqual(record.levelno, logging.DEBUG)
self.assertEqual(len(record.args), 4)
duration, logged_sql, params, alias = record.args
# Duration is hard to test without mocking time, expect under 1 second.
self.assertIsInstance(duration, float)
self.assertLess(duration, 1)
self.assertEqual(duration, record.duration)
# SQL is correct and not formatted.
self.assertEqual(logged_sql, sql)
self.assertNotEqual(logged_sql, connection.ops.format_debug_sql(sql))
self.assertEqual(logged_sql, record.sql)
# Params is None and alias is connection.alias.
self.assertIsNone(params)
self.assertIsNone(record.params)
self.assertEqual(alias, connection.alias)
self.assertEqual(alias, record.alias)
def test_queries_bare_where(self): def test_queries_bare_where(self):
sql = f"SELECT 1{connection.features.bare_select_suffix} WHERE 1=1" sql = f"SELECT 1{connection.features.bare_select_suffix} WHERE 1=1"