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.