Анонс pytest-djangoapp 0.12.0
В новой версии добавлена фикстура для контроля запросов к БД
Сегодня выпустил новую версию pytest-djangoapp — расширения для
Впервые я анонсировал это расширение летом прошлого года. За последний год приложение обросло функциональностью и на текущий момент предлагает фикстуры для:
А в новой версии добавлена возможность отслеживания выполненных SQL.
Вот как может выглядеть использование фикстуры в одном из тестов для вашего приложения:
Проект разрабатывается открыто на GitHub, желающие могут подключаться.
Иногда считать количество SQL-запросов полезно.
pytest
, позволяющего удобно тестировать подключаемые приложения для Django
. Впервые я анонсировал это расширение летом прошлого года. За последний год приложение обросло функциональностью и на текущий момент предлагает фикстуры для:
- проверки команд управления (management);
- модификации настроек проекта (settings);
- тестирования ответов от представлений (views);
- проверки шаблонных тегов (template tags);
- создания пользователей;
- проверки отправки эл. прочты;
- проверки интерфейсных сообщений пользователям (messages).
А в новой версии добавлена возможность отслеживания выполненных SQL.
На заметку
В
pytest-django
похожая функциональность прячется под фикстурами с длинными именами: django_assert_num_queries
и django_assert_max_num_queries
. Фикстуры эти выполнены в виде менеджеров контекста, что налагает на их использование определённые ограничения.Вот как может выглядеть использование фикстуры в одном из тестов для вашего приложения:
def test_db(db_queries):
... # Представим, что здесь мы обращается к БД, используя модели, ORM.
# А теперь можно удостовериться, что ко всем БД
# пришло нужное количество запросов.
assert len(db_queries) == 10
# Или, например, узнать, какие именно запросы пришли.
# При вызове без параметров покажутся запросы к БД по умолчанию, а вспомогательные
# запросы типа BEGIN и подобные будут исключены.
sqls = db_queries.sql()
# Можно также удостовериться, что время выполнения запросов
# укладывается в нужный предел (сек).
assert db_queries.time() < 1
# И в любой момент мы можем очистить историю запросов,
# чтобы внутри этого же теста проверить сколько запросов
# порождает другое обращение к БД.
db_queries.clear()
Внимание
Фикстура
db_queries
требует для работы Django 1.9+.Проект разрабатывается открыто на GitHub, желающие могут подключаться.
Иногда считать количество SQL-запросов полезно.
Категории
Окружение
Область
Уровень
На заметку
У нас есть представительство в Facebook. Ссылка в самом низу страницы.