tox and coverage.py
-
Comments:
- here.
Tox makes it really easy to run multiple tests on your project: against different versions of python or different versions of a related library.
It’s still lacking proper matrix testing: you need to manually define each environment, but apparently, that is going to change:
@schinckel @audreyr @r1chardj0n3s matrix/combinatorial testing with tox is coming, stay tuned :-)
— holger krekel (@hpk42) July 26, 2014
However, that’s not what I’m writing about today.
Today is about coverage testing, using coverage.py.
It’s possible, using tox, to get coverage.py
to run:
[testenv]
commands=
coverage run setup.py test
coverage report
deps=
coverage
However, this will generate a coverage report for just that environment. It would be better if you generated a coverage report for the whole project (although you may want per-environment coverage testing too).
So, we can abuse the fact that the tox envlist
will be created and processed in the order they appear:
[tox]
envlist = clean,py27,py34,stats
[testenv]
commands=
coverage run -a setup.py test
deps=
coverage
[testenv:clean]
commands=
coverage erase
[testenv:stats]
commands=
coverage report
covarage html
You’ll then get a nice html report in htmlcov/
, and a printed coverage report in your console.