1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

djangoでクエリ(sql)を投げた回数をテストで確認する

Posted at

テスト用のDBコネクションをいじってしまってて素直にTransactionTestCase.assertNumQueriesが使えない場合に。

# coding: utf-8

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")

from django.conf import settings
from django.db import connections

import unittest, pprint
from collections import deque
from core.models import Kvs, Hoge


class TestKvs(unittest.TestCase):

    def setUp(self):
        settings.DEBUG = True

    def tearDown(self):
        # django.db. reset_queries でもいい
        connections['default'].queries_log = deque()  
        settings.DEBUG = False

    def test_simple(self):
        hoge = list(Hoge.objects.all())[0]
        # select
        self.assertEqual(len(connections['default'].queries), 1)

        Kvs.set(hoge.id, hoge)
        # select, begin, update
        self.assertEqual(len(connections['default'].queries), 4)

        got = Kvs.get(hoge.id)
        # select
        self.assertEqual(got.id, hoge.id)
        self.assertEqual(len(connections['default'].queries), 5)


if __name__ == "__main__":
    unittest.main()

参考: Django: is there a way to count SQL queries from an unit test?

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?