Ich kann TransactionTestCase.assertNumQueries nicht gehorsam zum Testen verwenden, da ich die DB-Verbindung zum Testen durcheinander gebracht habe. Im Falle.
# 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_Anfragen sind in Ordnung
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()
Referenz: [Django: Gibt es eine Möglichkeit, SQL-Abfragen aus einem Komponententest zu zählen?](Http://stackoverflow.com/questions/1254170/django-is-there-a-way-to-count-sql-queries- from-an-unit-test)
Recommended Posts