toxを使って複数のPythonバージョンでCIしてカバレッジする方法

Pythonのプロジェクトでtoxを使って複数PythonバージョンでTravisCIしてCoverallsを使う方法です。

手元ではPython3.5で開発して、2.xでも動くのかな?Coverageは大丈夫かな?という想いを全てをgit pushにのせていくスタイルです。

tox + TravisCI

toxを使ってPython2.7, 3.3, 3.4でテストする".travis.yml"と"tox.ini"です。

testsディレクトリにテストが用意してあって、テストツールにはpytestを使っています。

.travis.yml

language: python

env:
  - TOXENV=py27
  - TOXENV=py33
  - TOXENV=py34

install:
  - pip install tox 

script: tox

tox.ini

[tox]
envlist = py{27,33,34}

[testenv]
basepython =
    py27: python2.7
    py33: python3.3
    py34: python3.4
deps =
    pytest
commands =
    py.test tests

TravisCIでリポジトリを有効してpushするとそれぞれのPythonでテストが始まります。

PyPIに登録してあるパッケージを、toxでテストするとShields.ioでいい感じのバッジを作れます。

PyPI

READMEに貼ってあるとわかりやすくて良い感じです。

TravisCI + Coveralls

TravisCIのテストが成功したときCoverallsにカバレッジさせるようにします。

PythonにはCoverallsのパッケージがあるのでこれを使うことで.travis.ymlに設定を追加するだけでCoverallsを使えます。

Coverallsの公式ドキュメントでも紹介されています(Python – Coveralls)。

embed.ly

Coverallsに対応した.travis.ymlの内容です。

language: python

env:
  - TOXENV=py27
  - TOXENV=py33
  - TOXENV=py34

install:
  - pip install tox 
  - pip install coveralls

script:
    - tox
    - coverage run --source=sample py.test tests
    - coverage report -m

after_success: coveralls

Coverallsでリポジトリを有効にしておけば、TravisCIで成功後にCoverallsが走ります。

まとめ

ローカルでtoxの用意したり、カバレッジを確認するのが面倒な方にはこの方法いいかもしれません。

Show comments

Adsense

Share

  • このエントリーをはてなブックマークに追加

About

どこにでもいる平凡なプログラムを書く人間のログ。

Tags

-->