Extension of assertNumQueries that can record queries that were executed and show the differences in future runs. It also shows tracebac of where the query was called.
The full documentation is at https://dj-test-queries.readthedocs.io.
Install dj-test-queries
:
pip install dj-test-queries
Apply NumQueriesMixin
to your test and use assertNumQueries
as you would normally do:
from test_queries import NumQueriesMixin
class XYZTests(NumQueriesMixin, TestCase):
def test_xyz(self):
with self.assertNumQueries(3):
xyz()
Run the tests with TEST_QUERIES_REWRITE_SQLLOGS
environment variable to generate sqllog files:
TEST_QUERIES_REWRITE_SQLLOGS="true" manage.py test
Files like test_views.XYZTests.test_xyz.sqllog
will appear in sqllog
directory next to your test_views.py
file.
If you will run the test next time and the queries will differ from previous, the test will print out output detailing the change with stacktrace from where the query was executed. You can also enlist the *.sqllog
files to your repository to see the changes.
If the tests are executed without the TEST_QUERIES_REWRITE_SQLLOGS
environment variable, the logs are created to files named like test_views.XYZTests.test_xyz.sqllog
to make possible to compare the difference.
Does the code actually work?
source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install tox
(myenv) $ tox
pip install -r requirements_dev.txt
invoke -l
Tools used in rendering this package: