LoginSignup
2
1

More than 3 years have passed since last update.

jenkinsを使用したdjangoのunittest

Last updated at Posted at 2019-01-28

はじめに

jenkinsでdjangoを使用したアプリケーションのunitestを行う手順を記述します
unittestを行うサンプルアプリケーションはgithubに公開しています

前提事項

unittest(django)

バッチアプリケーション(django)をベースにunittestを行う手順を説明します

ソフトウェア/アプリケーション構成

ソフトウェア/アプリケーション構成は以下のようになります
ソフトウェア/アプリケーション構成

Jenkinsのプラグイン

jenkinsに以下をインストールします

プラグイン 用途
ShiningPanda Plugin Virtualenv Builder。仮想環境でpythonを実行する
Cobertura Plugin カバレッジレポートを作成する

Jenkinsのpythonパス

jenkinsの「Global Tool Configuration」でシステム環境のpythonパスを設定します
pythonパス

Jenkinsのジョブ設定

Jenkinsでジョブを作成してdjangoのunittestを実行します

ソースコード管理

ソースコード管理

仮想環境でビルド等を行うためリポジトリ情報を入力します

項目 内容
リポジトリURL リポジトリURLを入力します
ビルドするブランチ ビルド対象のブランチを入力します

ビルド

ビルド

Virtualenv Builder

従来の環境と競合しないようにVirtualenvを使用して仮想環境でunittestを実行します

項目 内容
Python version Pythonパスを選択します
Clear チェックすると仮想環境は毎回再作成します
Nature Commandの実行形式を指定します
Command unittestを実行するコマンドを記述します

Commandサンプルは以下のとおりです

#pythonのモジュールをインストールする
pip install beautifulsoup4==4.6.0
pip install Django==2.1.5
pip install django-admin-tools==0.8.1
pip install django-bootstrap-form==3.4
pip install lxml==4.3.0
pip install mysqlclient==1.3.12
pip install pytz==2018.9
pip install PyYAML==3.12
pip install pytest==4.1.1
pip install pytest-cov==2.6.1
pip install pytest-django==3.4.5

#gitからcloneしたパスに合わせて設定ファイルの書き換えを行う
JENKINS_HOME=/var/lib/jenkins/workspace/unittest_pypeach_django
CONF_FILE=application_production.yml
sed -e "s/home\/pypeach/var\/lib\/jenkins\/workspace\/unittest_pypeach_django/g" ${JENKINS_HOME}/resource/${CONF_FILE} > ${JENKINS_HOME}/resource/${CONF_FILE}.tmp
cat ${JENKINS_HOME}/resource/${CONF_FILE}.tmp > ${JENKINS_HOME}/resource/${CONF_FILE}

#メッセージを作成する
django-admin compilemessages -l ja
#unittestを実行する
pytest --ds=pypeach_django.settings --reuse-db --junitxml=unittest.xml app_pypeach_django/test
#カバレッジを実行する
pytest --ds=pypeach_django.settings --reuse-db --cov=app_pypeach_django/test --cov-report=xml

pytest-django

pytest-djangoを使用してコマンドラインでunittestを行います

テスト実行

pytest --ds=[settings] --[database creation/re-use] --junitxml=[creating JUnitXML format files] [selecting tests]
例)pytest --ds=pypeach_django.settings --reuse-db --junitxml=unittest.xml app_pypeach_django/test

項目 内容
settings 設定ファイル名を指定する
database creation/re-use DBの新規作成や既存DB使用を指定する
creating JUnitXML format files テスト実行結果を出力するパスとファイル名を指定する
selecting tests テスト実行対象を指定する。単一ファイルやパッケージ指定ができる
カバレッジ実行

pytest --ds=[settings] --[database creation/re-use] --cov=[selecting tests] --cov-report=[file extension]
例)pytest --ds=pypeach_django.settings --reuse-db --cov=app_pypeach_django/test --cov-report=xml

項目 内容
settings テスト実行と同じ
database creation/re-use テスト実行と同じ
selecting tests テスト実行対象を指定する
単一ファイルやパッケージ指定ができる
file extension テスト実行結果を出力するファイルの拡張子を指定する

ビルド後の処理

ビルド後の処理

テスト結果を集計します

Junitテスト結果の集計

以下をセットする

項目 内容
テスト結果XML テスト結果のファイルを指定する。
creating JUnitXML format filesとファイルパスを合わせます

Coberturaカバレッジ・レポートの集計

以下をセットする

項目 内容
Cobertura XMLレポート パターン テスト結果のファイル(coverage.xml)を指定する。
file extensionのファイル拡張子と合わせます

参考情報

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1