Je ne peux pas utiliser TransactionTestCase.assertNumQueries docilement parce que j'ai dérangé la connexion DB pour les tests. Au cas où.
# 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_les requêtes sont bien
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()
Référence: [Django: existe-t-il un moyen de compter les requêtes SQL à partir d'un test unitaire?](Http://stackoverflow.com/questions/1254170/django-is-there-a-way-to-count-sql-queries- à partir d'un test unitaire)