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
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
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"
--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
and you’re good to go. Connect to the server with your browser and enjoy hands free code coverage updates.