У меня есть большое Django приложение с тоннами тестов, которым требуется SQL оптимизация запросов.
Я использую pytest- django для запуска своих тестов.
I не хочу добавлять assertNumQueries
или django-assert-num-queries
для каждого теста в отдельности, а вместо этого создать обзор о том, сколько SQL запросов выполняет каждый из всех тестов, чтобы узнать, какой код требуется наибольшая оптимизация, например:
test | number of queries
------------------------------------------------
test_a.py::test_my_function1 | 5
test_a.py::test_my_function3 | 2
test_a.py::test_my_function5 | 7
Возможно ли настроить ловушку pytest в conftest.py, который подсчитывает количество SQL запросов для каждого теста (БД) и показывает их в результате - без необходимости изменять источник моих тестов (например, добавление декораторов)?
Мой наивный подход состоял бы в том, чтобы использовать эти ловушки и каким-то образом получать доступ к соединению с базой данных до и после каждого теста:
def pytest_runtest_call(item):
pass
def pytest_runtest_teardown(item, nextitem):
return True