Giter Club home page Giter Club logo

coveralls-python's Introduction

Coveralls for python

image

image

image

Coveralls.io is service to publish your coverage stats online with a lot of nice features. This package provides seamless integration with coverage.py in your python projects. For ruby projects, there is an official gem. Only projects hosted on Github are supported.

Works with python 2.6+, 3.2+ and pypy 1.9.

Usage (Travis CI)

This library will publish your coverage results on coveralls.io for everyone to see (unless you're using pro account). This package can possibly work with different CI environments, but it's only tested to work with Travis CI atm.

  1. First, log in via Github and add your repo on Coveralls website.
  2. Add pip install coveralls to install section of .travis.yml
  3. Make sure you run your tests with coverage during the build in script part. Example:

    # --source specifies what packages to cover, you probably want to use that option
    script:
      coverage run --source=yourpackagename setup.py test

    Note, that example command will gather coverage for specified package. If you wish to customize what's included in your reports, consult coverage docs.

  4. Execute run coveralls in after_success section:

    after_success:
      coveralls

Full example of .travis.yml:

language: python
python:
  - 2.7
  - 3.3
install:
  - pip install -r requirements.txt
  - pip install coveralls
script:
  coverage run --source=moscowdjango,meetup manage.py test
after_success:
  coveralls

Usage (another CI)

If you're NOT using Travis, first option is to provide a repo_token option in .coveralls.yml at the root of your repo. This is your own secret token, which is available at the bottom of your repository's page on Coveralls. Make sure it stays secret, do not put it in your public repo.

Example of .coveralls.yml:

# .coveralls.yml
repo_token: TjkDuVpGjuQcRhNW8dots9c8SSnv7ReM5

Another alternative is to use COVERALLS_REPO_TOKEN env variable.

Nosetests

Nosetests provide a plugin for coverage measurement of your code:

$ nosetests  --with-coverage --cover-package=<your_package_name>

However, it gathers coverage for all executed code, ignoring source config option in .coveragerc. It means, that coveralls will report unnecessary files, which is inconvenient. Here is a workaround, use omit option in your .coveragerc to specify a list of filename patterns, the files to leave out of reporting (your paths might differ) :

[report]
omit =
    */python?.?/*
    */site-packages/nose/*

Note, that native coverage.py and py.test are not affected by this problem and do not require this workaround.

How it works

It makes custom report for data generated by coverage.py package and sends it to json API of coveralls.io service. All python files in your coverage analysis are posted to this service along with coverage stats, so please make sure you're not ruining your own security! For private projects there is Coveralls Pro.

Tips for .coveragerc config

This section is a list of most common options for coverage.py, which collects all the data. Coveralls feeds from this data, so it's good to know how to to configure coverage.py.

To limit the report with only your packages, specify their names (or directories):

[run]
source = pkgname,your_otherpackage

To exclude parts of your source from coverage, for example migrations folders:

[report]
omit = */migrations/*

Some lines are never executed in your tests, but that can be ok. To mark those lines use inline comments right in your source code:

if debug:   # pragma: no cover
    msg = "blah blah"
    log_message(msg, a)

Sometimes it can be tedious to mark them in code, so you can specify whole lines to .coveragerc:

[report]
exclude_lines =
    pragma: no cover
    def __repr__
    raise AssertionError
    raise NotImplementedError
    if __name__ == .__main__.:

Finally, if you're using non-default configuration file, specify it to coveralls command:

$ coveralls --rcfile=<file>

Troubleshooting

In case your coverage is not submitted to coveralls.io, despite your best efforts to configure, you can use debug:

$ coveralls debug

Debug mode doesn't send anything, just outputs prepared json and reported files list to stdout.

Contributing

Run tests:

$ python setup.py test

Install latest unstable version:

$ pip install coveralls==dev

Bitdeli badge

coveralls-python's People

Contributors

ainmosni avatar alex avatar asmeurer avatar bitdeli-chef avatar brad avatar coagulant avatar isms avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.