Archive

Archive for December, 2010

Coverage and pytest 2.0.0

6 December 2010 Leave a comment

I had been struggling to find a nice flexible command-line workflow for getting coverage reports on py.test runs. I ended up using pytest-cov and pytest-coverage (never managed to make up my mind between these two plugins) but I wasn’t satisfied. Since they haven’t yet been updated for pytest 2.0.0, I’ve been forced to find a better way. Here it is:

Setup

The only setup required is to use pytest’s stand-alone script generation utility:

(my_env)me@my_computer:~/my_project$ py.test --genscript=test.py

That’s it! Of course, you need to have the latest pytest and coverage installed and you should create and configure setup.ini and .coveragerc to your liking.

Using it

The generic invocation is coverage run [coverage options] test.py [py.test options], which is about as clear as it gets, I think. A sample session looks like:

(my_env)me@my_computer:~/my_project$ coverage run --source=some_package,other_package run test.py -k "feature1 feature2" --exitfirst somepackage/tests
================== test session starts ==================
platform linux2 -- Python 2.6.6 -- pytest-2.0.0
collected 77 items

somepackage/tests/test_feature1.py .......
somepackage/tests/test_feature2.py .....

======= 65 tests deselected by 'feature1 feature2'=======
======= 12 passed, 65 deselected in 18.02 seconds========
(my_env)me@my_computer:~/my_project$ coverage html
(my_env)me@my_computer:~/my_project$ firefox htmlcov/index.html

In an ideal world, the genscript step wouldn’t be required, but it’s not a big annoyance.

Categories: Python Tags: ,