RE: Jenkins と Python の連携

はじめに

今回は、Jenkins と Python の連携についてです。
使用するツールは、とても便利なテストフレームワーク pytest と
カバレッジ coverage との連携についてです。

pytest の連携

まず、テスト結果のレポートからです。
Jenkins 側へ追加のプラグインのインストールは不要です。

pytest は、実行時にオプションを渡すことで XUnit 形式のレポートを出力できます。

インストール

$ easy_install -ZU pytest

XUnit 形式の XML でテスト結果を出力する

$ py.test --junitxml=pytest.xml test_sample1.py

pytest の使い方は割愛しますが、コマンドから --junitxml オプションを付与することで
XUnit形式のレポートを出力させることができます。

レポート結果の集約には、ビルド後の処理に、JUnitテスト結果の集計 へチェックをいれ、
出力ファイルとなる pytest.xml を入力します。


coverage 連携

カバレッジの出力には、 Python ライブラリの python-coverage 、
pytest プラグインの pytest-cov
Jenkins プラグインの Cobertura Plugin が必要です。

Cobertura Plugin のインストールは、 Jenkins の管理コンソールからインストールします。

python 側のインストール

$ easy_install -ZU coverage
$ easy_install -ZU pytest-cov

カバレッジXML 形式で出力する

$ py.test --cov-report xml --cov sample1 test_sample1.py

テスト結果のレポートと同じように、コマンドへオプションを渡すことで
カバレッジ結果を XML で出力します。

ビルド後の処理に、Cobertura カバレッジ・レポートの集計を実行し、出力ファイルを読み込ませます。


最後に

すべて出力させる

py.test --junitxml=pytest.xml \
        --cov-report xml \
        --cov sample1 \
        test_sample1.py

Jenkins 画面