I recently found myself needing to write up a
test suite for some preexisting code. Tools like coverage
are helpful in
identifying untested code paths, but can be annoyingly multi-step when you are
trying to confirm that you hit the paths you were expecting. Fortunately I found
a combination of tools that make this a breeze.
The first step is configure coverage
to put its html report into the
directory you want. This is done by adding a .coveragerc
file to the
directory that coverage
will run in. Since I wanted my report a bit outside
of my main project directory for me the file looked like this.
[html]
directory = ../coverage/
To get a report you just run
coverage run --source='.' manage.py test
coverage html
But this is taking two steps, when I’d really prefer zero. Enter rerun
.
It is a handy little script made by
Jonathan Hartley that polls the files in a given
directory and reruns a command if anything changes. This is especially useful
for running tests, since you can have them run instantly on save.
rerun --ignore=.coverage "coverage run --source='.' manage.py test; coverage html"
Note the --ignore=.coverage
. This is the file coverage
generates and we
don’t want it to get stuck in a loop rerunning because this file changes.
Great! Now the coverage html is getting generated automatically, but I still
need to hit refresh on my browser to see it. Now it’s livereload
’s time to
shine. This tool by Hsiaoming Yang does exactly
what it sounds like. Open up a new terminal and navigate to the html directory
then just run
livereload .
and you’re good to go. Connect to the server with your browser and enjoy hands free code coverage updates.