Continuous integration with code coverage in Python
I decided it would be good to have a coverage report of our Python code, with nice visualization like Clover. So I took Ron Smith's PyAntTasks, and addedUpdate
This code has been integrated into the main tree.
py-cover
task to them. This will
run coverage for every test, and a cumulative one. In other words, you can
see what code a particular test exercises, and what code all the tests
in your tree exercise.
This also modifies py-test
task to include
packagedtests
attribute - see below.
The newly added py-cover
task runs Ned Batchelder's coverage.py (download it separately), and is specified as follows in
your build.xml
:
<py-cover packagedtests="false" pythonpath="${pythonpath}" reportsDir="${reports}" coverage="${tools}/coverage.py"> <tests dir="."> <include name="**Test.py"> </tests> <src dir="${quickRoot}"> <include name="**/*.py"> <include name="*.py"> </src> </py-cover>
Here, <tests> is a FileSet specifying tests to run, <src;> is a FileSet
specifying source code to cover.
The attributes are:
-
reportsDir
- where the coverage reports go -
packagedtests
- this idiosyncrasy is prompted by our tree setup. If this attribute istrue
it means that the test files reside in Python packages,false
otherwise. (In our case, they do not; they are in the tree but are not packages. Note that the originalpy-test
task assumed they are in packages, I ahve changed this too). -
coverage
- path tocoverage.py
on your system (which you downloaded separately, right?)
P.S. I know about the colorize.py thingie, but I rolled my own (uglier, of course) for this one.
No comments:
Post a Comment