python / expert
Snippet
Benutzerdefiniertes TestCase-Mixin für Programmatische SQL-Abfrage-Prüfungen
Durch Erweitern von Djangos `CaptureQueriesContext` lassen sich benutzerdefinierte Test-Mixins erstellen, die Datenbankabfragen erfassen und Tests automatisch fehlschlagen lassen, wenn Grenzwerte überschritten werden.
snippet.py
python
1
2
3
4
5
6
7
8
9
10
11
12
13
from django.test import TestCasefrom django.test.utils import CaptureQueriesContextfrom django.db import connectionclass AssertQueryLimitMixin:def assert_max_queries(self, limit: int):class QueryContextManager(CaptureQueriesContext):def __exit__(self, exc_type, exc_val, exc_tb):super().__exit__(exc_type, exc_val, exc_tb)query_count = len(self.captured_queries)if query_count > limit:raise AssertionError(f'Query limit exceeded: {query_count} > {limit}')return QueryContextManager(connection)
django
Erklärung
1
class AssertQueryLimitMixin:
Definiert ein wiederverwendbares Test-Mixin zur Überprüfung von Datenbankabfrage-Limits.
2
class QueryContextManager(CaptureQueriesContext):
Erweitert den Kontextmanager von Django zur Erfassung von SQL-Abfragen.
3
if query_count > limit:
Vergleicht die Anzahl erfasster SQL-Abfragen mit dem Schwellenwert und wirft bei Überschreitung einen AssertionError.