Web屋さんのアレ

Python大好きなWeb屋のおじさんがぺろぺろ何かを書いてくよ。

Jenkins + Selenium + Django でテスト自動化のための環境構築

Jenkins + Seleniumを使ってリポジトリにコードをプッシュした際に、テストもやっちまいましょうよーってお誘いが来たので手順メモとして書いておく。

環境

  • ubuntu10.04
  • python2.6
  • django1.3

必要なモノ

サーバー

  • selenium-server-standalone.jar
  • jenkins.jar

アプリケーション

Pythonライブラリ

手順

1, Ubuntu Serverにて、FireFoxを仮想フレームバッファで動かす

GUI環境のある場所でやる人はやらなくても良い部分。
Xvfbという仮想フレームバッファを使ってCUIでもFirefoxを動かせるようにしようぜってものだと思う。

インストール

sudo apt-get install xvfb
sudo apt-get install firefox

環境変数の指定

export DISPLAY=:1.0

起動

Xvfb :1 -screen 0 1024x768x24 > /dev/null &

2, Selenium Serverを動かす

ダウンロード

http://seleniumhq.org/download/

起動

java -jar selenium-server-standalone.jar > /tmp/selenium.log 2>&1 &

3, djangoに必要なライブラリを入れる

seleniumを使ったテストの書き方は多分説明してるサイトが沢山あるので割愛。。

インストール

sudo pip install selenium
sudo pip install unittest-xml-reporting

settings.py の編集

# 追加
TEST_RUNNER = 'xmlrunner.extra.djangotestrunner.XMLTestRunner'
TEST_OUTPUT_VERBOSE = True
TEST_OUTPUT_DESCRIPTIONS = True
TEST_OUTPUT_DIR = 'xmlrunner'

4, Jenkins を動かす

ダウンロード

http://jenkins-ci.org/

起動

java -jar jenkins.jar

プラグインの導入

TOP > Jenkinsの管理 > プラグインの管理 > 利用可能 > Jenkins Mercurial pluginにチェック > インストール

設定

新規ジョブ作成
フリースタイルプロジェクトのビルド

ソースコード管理システム > Mercurial
リポジトリブラウザ > Bitbucket

ビルドトリガ > 定期的に実行(1時間毎に実行する様に設定)

* */1 * * *

ビルド手順の追加 > シェルの実行

python manage.py test

ビルド後の処理 > JUnitテスト結果の集計にチェック

xmlrunner/*.xml

これで多分動くはず。。
思い出しながら書いたので間違ってる箇所もあるかも知れないので、飽くまで参考程度に。。
あとはBitbucketにpushしたらビルドが走る様にすれば完璧ですなー。