Есть ли библиотека для тестирования моего приложения Django для запросов SQL?

У меня есть большое сложное приложение Django, которое мы используем и которое делает множество вещей. Глядя на панель инструментов отладки Django, некоторые из наших представлений выполняют много запросов SQL. Я хочу повысить его производительность, уменьшив количество запросов SQL (например, добавив больше select_related, более умные запросы и т. д.). Я хотел бы иметь возможность измерять улучшения по мере продвижения вперед, поощрять себя и иметь возможность сказать, сколько жира было сброшено. У меня есть большой набор модульных тестов django для этого приложения, которые затрагивают множество частей кода.

Есть ли какая-то библиотека/программа/скрипт, которая может запускать юнит-тесты, а затем распечатывать, сколько всего SQL-запросов было выполнено? Таким образом, я могу многократно улучшать наше приложение.


person Rory    schedule 18.08.2011    source источник


Ответы (1)


Эта информация доступна только в режиме отладки. Я не знаю ни одной библиотеки, которая делала бы именно то, что вы пытаетесь сделать, однако вы, вероятно, могли бы довольно легко что-то настроить.

Если вы работаете в режиме отладки, вы можете просмотреть все запросы, которые были выполнены с помощью connection.queries. Точно так же работает панель инструментов отладки django.

Поэтому измените свои юнит-тесты, чтобы они смотрели на диктофон connection.queries, и это должно помочь вам начать работу довольно хорошо.

person John    schedule 18.08.2011
comment
Возможно, вы даже сможете написать собственное средство запуска тестов, которое выводит общее количество запросов в конце выполнения. - person Daniel Roseman; 18.08.2011
comment
@Daniel Roseman Это хорошая мысль о том, где может жить код. - person John; 18.08.2011
comment
Да, пользовательский тестовый бегун - это то, что я хотел бы. Было бы неплохо, если бы все это было интегрировано. - person Rory; 19.08.2011