koukiblog

たぶんweb系の話題

Djangoのユニットテスト内で発行されたクエリをキャプチャする

CaptureQueriesContextを利用すればクエリをキャプチャできたのでメモ。

こんな感じで使える

from django.db import connection
from django.test.utils import CaptureQueriesContext


with CaptureQueriesContext(connection) as ctx:
  # test method

  for q in ctx.captured_queries:
    print(f"time{q['time']}, sql:{q['sql']}")
    print(len(ctx.captured_queries))