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 istrueit means that the test files reside in Python packages,falseotherwise. (In our case, they do not; they are in the tree but are not packages. Note that the originalpy-testtask assumed they are in packages, I ahve changed this too). -
coverage- path tocoverage.pyon 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