coverage

Coverage.py 简单介绍和基本使用

Coverage.py is a tool for measuring code coverage of Python programs. It monitors your program, noting which parts of the code have been executed, then analyzes the source to identify code that could have been executed but was not.

安装: pip install coverage

一般用途:

# gather data
$ coverage run my_program.py arg1 arg2
... your program's output...

# report the results
$ coverage report -m
...the results...

# nice html presentation, see htmlcov/index.html in your browser
$ coverage html

coverage.py 的默认配置文件为 .coveragerc, 你可以进行相关的设置,比如忽略哪些代码等等。关于 coverage.py 的其他相关信息,可以去作者的网站详细了解.

配合使用测试工具

这个可能相比之前单独使用 coverage.py,这个方式更加常用。

如果你使用了 nose 作为你的测试工具,那么我们可以使用它提供的插件,很简单地运行 nosetests -v --with-coverage --cover-package=PACKAGE 就可以了。

如果你使用的是 pytest(最近我也转到使用这个了),那么配合使用 pytest-cov 这个插件, 使用 py.test --cov-report term-missing --cov=your_package 就可以了。

在 github 上配合 travis ci 使用 coveralls

几个可能有用的例子和参考文档:

具体的步骤如下:

  1. 注册帐号: 使用 github 帐号登录 coveralls, 授予权限,选择要使用的 repo
  2. 安装依赖: 在 install 那一项增加 pip install coveralls
  3. 跑测试时也要跑覆盖度: 就在 script 那一项下面增加 nosetests -v --with-coverage --cover-package=PACKAGE
  4. 上传数据: 在 after success 那一项下面增加 coveralls
  5. 展示覆盖度: 得在 README.md 中增加 badage

这里以 wonderful_bing 的 repo 设置举个实际的例子,以便有更加真实的感受:

language: python

python:
    - "2.7"

before_install:
    - sudo apt-get update -qq
    - sudo apt-get install -qq libnotify-bin
    - pip install requests
    - pip install coveralls

script:
    - nosetests -v --with-coverage --cover-package=wonderful_bing

after_success:
    - coveralls

notifications:
    email: false

在 github 上配合 travis ci 使用 codecov

最近慢慢逐渐切向使用 pytest + codecov

详细的例子就不举了,实际例子可以去参考 tldr.py。 过程无非是授权并添加 repo;ci 集成;加个 badage.