Generate performance rapports from your django database performance tests (inspired by coverage.py).
Install pytest-django-queries, write your pytest tests and mark any test that should be counted or use the count_queries fixture.
Note: to use the latest development build, use pip install --pre pytest-django-queries
import pytest @pytest.mark.count_queries def test_query_performances(): Model.objects.all() # Or... def test_another_query_performances(count_queries): Model.objects.all()Each test file and/or package is considered as a category. Each test inside a "category" compose its data, see Visualising Results for more details.
You will find the full documentation here.
TBA.
Simply install pytest-django-queries through pip and run your tests using pytest. A report should have been generated in your current working directory in a file called with .pytest-queries.
Note: to override the save path, pass the --django-db-bench PATH option to pytest.
You can generate a table from the tests results by using the show command:
django-queries showYou will get something like this to represent the results:
+---------+-------------------------+ | Module | Tests | +---------+-------------------------+ | module1 | +-----------+---------+ | | | | Test Name | Queries | | | | +-----------+---------+ | | | | test1 | 0 | | | | +-----------+---------+ | | | | test2 | 1 | | | | +-----------+---------+ | +---------+-------------------------+ | module2 | +-----------+---------+ | | | | Test Name | Queries | | | | +-----------+---------+ | | | | test1 | 123 | | | | +-----------+---------+ | +---------+-------------------------+ | module3 | | +---------+-------------------------+For a nicer presentation, use the html command, to export the results as HTML.
django-queries htmlIt will generate something like this.
When running pytest, pass the --django-backup-queries (can take a path, optionally) then you can run django-queries diff to generate results looking like this:
First of all, clone the project locally. Then, install it using the below command.
./setup.py developAfter that, you need to install the development requirements. For that, run the below command.
pip install -e .[dev]