Skip to main content

py.test plugin for coverage reporting with support for both centralised and distributed testing

Project description

This plugin produces coverage reports using the coverage package. It supports centralised testing and distributed testing in both load and each modes.

All features offered by the coverage package should be available, either through this plugin or through coverage’s own config file.

Installation

This plugin depends on features just added to py and pytest-xdist. Until py 1.2.2 and pytest-xdist 1.2 are released you will need to install the ‘tip’ development versions from:

http://bitbucket.org/hpk42/py-trunk/downloads/

http://bitbucket.org/hpk42/pytest-xdist/downloads/

Usage

Centralised Testing

Running centralised testing:

py.test --cov myproj tests/

Shows a terminal report:

-------------------- coverage: platform linux2, python 2.6.4-final-0 ---------------------
Name                 Stmts   Exec  Cover   Missing
--------------------------------------------------
myproj/__init__          2      2   100%
myproj/myproj          257    244    94%   24-26, 99, 149, 233-236, 297-298, 369-370
myproj/feature4286      94     87    92%   183-188, 197
--------------------------------------------------
TOTAL                  353    333    94%

Distributed Testing

Distributed testing with dist mode set to load and branch coverage enabled:

py.test -n 2 --cov myproj --cov-branch tests/

The results from the slaves will be combined like so:

-------------------- coverage: platform linux2, python 2.6.4-final-0 ---------------------
Name                 Stmts   Exec Branch BrExec  Cover   Missing
----------------------------------------------------------------
myproj/__init__          2      2      0      0   100%
myproj/myproj          257    244     56     50    93%   24-26, 99, 149, 233-236, 297-298, 369-370
myproj/feature4286      94     87     18     13    89%   183-188, 197
----------------------------------------------------------------
TOTAL                  353    333     74     63    92%

Distributed testing in each mode:

py.test --cov myproj --dist=each
        --tx=popen//python=/usr/local/python264/bin/python
        --tx=popen//python=/usr/local/python265/bin/python
        tests/

Will produce a report for each slave:

-------------------- coverage: platform linux2, python 2.6.4-final-0 ---------------------
Name                 Stmts   Exec  Cover   Missing
--------------------------------------------------
myproj/__init__          2      2   100%
myproj/myproj          257    244    94%   24-26, 99, 149, 233-236, 297-298, 369-370
myproj/feature4286      94     87    92%   183-188, 197
--------------------------------------------------
TOTAL                  353    333    94%
-------------------- coverage: platform linux2, python 2.6.5-final-0 ---------------------
Name                 Stmts   Exec  Cover   Missing
--------------------------------------------------
myproj/__init__          2      2   100%
myproj/myproj          257    244    94%   24-26, 99, 149, 233-236, 297-298, 369-370
myproj/feature4286      94     87    92%   183-188, 197
--------------------------------------------------
TOTAL                  353    333    94%

If desired distributed testing in each mode can instead produce a single combined report:

py.test --cov myproj --cov-combine-each --dist=each
        --tx=popen//python=/usr/local/python264/bin/python
        --tx=popen//python=/usr/local/python265/bin/python
        tests/

Which looks like:

---------------------------------------- coverage ----------------------------------------
                          platform linux2, python 2.6.4-final-0
                          platform linux2, python 2.6.5-final-0
Name                 Stmts   Exec  Cover   Missing
--------------------------------------------------
myproj/__init__          2      2   100%
myproj/myproj          257    244    94%   24-26, 99, 149, 233-236, 297-298, 369-370
myproj/feature4286      94     87    92%   183-188, 197
--------------------------------------------------
TOTAL                  353    333    94%

Limitations

For distributed testing the slaves must have the pytest-cov package installed. This is needed since the plugin must be registered through setuptools / distribute for pytest to start the plugin on the slave.

Currently the coverage rc file is not rsynced to slaves which can result in different behaviour on the slaves. Use command line options for the time being.

Acknowledgements

Holger Krekel for pytest with its distributed testing support.

Ned Batchelder for coverage and its ability to combine the coverage results of parallel runs.

Whilst this plugin has been built fresh from the ground up to support distributed testing it has been influenced by the work done on pytest-coverage (Ross Lawley, James Mills, Holger Krekel) and nose-cover (Jason Pellerin) which are other coverage plugins for pytest and nose respectively.

No doubt others have contributed to these tools as well.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytest-cov-0.7.tar.gz (9.4 kB view details)

Uploaded Source

File details

Details for the file pytest-cov-0.7.tar.gz.

File metadata

  • Download URL: pytest-cov-0.7.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pytest-cov-0.7.tar.gz
Algorithm Hash digest
SHA256 0accdc700864d1332c4cd63a5cd33075f863bf3a0ffce16d435db9bddee17dba
MD5 51f7ffdfb37cd5a9a01edc9f319d9ed3
BLAKE2b-256 2d7be92d51de9b74430ab319613ab3d2d8237c7c910b8c6c0f5cd7a0d5f2a595

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page